398 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?

8voto

rafee_que_ Punkte 709

Mehrere Teilstrings können mit einem einfachen regulären Ausdruck ersetzt werden. Zum Beispiel möchten wir die Nummer (123) 456-7890 in 1234567890 umwandeln, das können wir wie folgt tun.

var a = '(123) 456-7890';
var b = a.replace(/[() -]/g, '');
console.log(b); // ergibt 1234567890

Wir können die zu ersetzenden Teilstrings zwischen [] übergeben und der zu verwendende String sollte als zweiter Parameter an die replace-Funktion übergeben werden.

7voto

Diego Fortes Punkte 6850

Zweites Update

Ich habe die folgende Funktion entwickelt, die in der Produktion verwendet werden kann. Vielleicht kann sie jemand anderem helfen. Es handelt sich im Wesentlichen um eine Schleife der nativen replaceAll JavaScript-Funktion, die keine Verwendung von Regex macht:

function replaceMultiple(text, characters){
  for (const [i, each] of characters.entries()) {
    const previousChar = Object.keys(each);
    const newChar = Object.values(each);

    text = text.replaceAll(previousChar, newChar);
  }  

return text
}

Die Verwendung ist sehr einfach. So würde es aussehen, wenn man das Beispiel des OP verwendet:

const text = '#Bitte_senden_Sie_ein_Informationspaket_an_die_folgende_Adresse:';
const characters = [
    {
    "#":""
    },
   {
    "_":" "
    },
]

const result = replaceMultiple(text, characters);

console.log(result); //'Bitte senden ein Informationspaket an die folgende Adresse:'

Aktualisierung

Sie können jetzt replaceAll nativ verwenden.

Veraltete Antwort

Hier ist eine weitere Version unter Verwendung von String Prototype. Viel Spaß!

String.prototype.replaceAll = function(obj) {
    let finalString = '';
    let word = this;
    for (let each of word){
        for (const o in obj){
            const value = obj[o];
            if (each == o){
                each = value;
            }
        }
        finalString += each;
    }

    return finalString;
};

'abc'.replaceAll({'a':'x', 'b':'y'}); //"xyc"

6voto

karim somai Punkte 129

Sie können einfach Folgendes ausprobieren:

str.replace(/[.#]/g, 'ersatzzeichen');

Dies ersetzt .,- und # durch Ihr Ersatzzeichen!

5voto

Tran Hung Punkte 51

Bitte versuchen Sie es:

  • Ersetzen Sie mehrere Zeichenfolgen

    var str = "http://www.abc.xyz.com"; str = str.replace(/http:|www|.com/g, ''); //str ist "//.abc.xyz"

  • Ersetzen Sie mehrere Zeichen

    var str = "a.b.c.d,e,f,g,h"; str = str.replace(/[.,]/g, ''); //str ist "abcdefgh";

Viel Glück!

4voto

Beejor Punkte 7262

Hier ist eine einfache Möglichkeit, dies ohne RegEx zu tun.
Sie können Dinge wie gewünscht prototypisieren und/oder zwischenspeichern.

// Beispiel: translate( 'faded', 'abcdef', '123456' ) gibt '61454' zurück
function translate( s, sFrom, sTo ){
    for ( var out = '', i = 0; i < s.length; i++ ){
        out += sTo.charAt( sFrom.indexOf( s.charAt(i) ));
    }
    return out;
}

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