420 Stimmen

Ersetzen Sie mehrere Zeichen in einem replace-Aufruf

Ich muss jede Instanz von '_' durch ein Leerzeichen ersetzen und jede Instanz von '#' durch nichts/leer.

var string = '#Bitte send_an_informationspaket_an_die_folgende_Adresse:';

Ich habe das versucht:

string.replace('#','').replace('_', ' ');

Ich mag es nicht wirklich, Befehle wie diese aneinanderzureihen. Gibt es einen anderen Weg, um es in einem zu machen?

-1voto

Pit Punkte 303

Eine Funktion und eine Prototyp-Funktion.

String.prototype.replaceAll = function (search, replacement) {
    var target = this;
    return target.replace(new RegExp(search, 'gi'), replacement);
};

var map = {
    '&': 'und ',
    '[?]': '',
    '/': '',
    '#': '',
    // '|': '#65 ',
    // '[\]': '#66 ',
    // '\\': '#67 ',
    // '^': '#68 ',
    '[?&]': ''
};

var map2 = [
    {'&': 'und '},
    {'[?]': ''},
    {'/': ''},
    {'#': ''},                
    {'[?&]': ''}
];

name = replaceAll2(name, map2);
name = replaceAll(name, map);

function replaceAll2(str, map) {            
    return replaceManyStr(map, str);
}  

function replaceManyStr(replacements, str) {
    return replacements.reduce((accum, t) => accum.replace(new RegExp(Object.keys(t)[0], 'g'), t[Object.keys(t)[0]]), str);
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X