2 Stimmen

Javascript str_replace viele auf einmal

Gibt es eine geradlinige Art und Weise zu machen, ein Zeichen ersetzen in Javascript von vielen Zeichen in nur eine Anweisung mit verschiedenen Ersatz für jeden, wie es in PHP möglich ist?

Ich meine, so etwas wie:

replace('áéíóú', 'aeiou');

Dadurch wird á durch a, é durch e, í durch i und so weiter ersetzt...

Vielen Dank im Voraus,

7voto

Esailija Punkte 134081

Verwenden Sie regex mit dem globalen Flag:

var map = {
    "á": "a",
    "é": "e",
    "í": "i",
    "ó": "o",
    "ú": "u"
};

"áéíóú".replace(/[áéíóú]/g, function(m){
    return map[m];
});

3voto

Mitya Punkte 32264

Nicht wirklich. Versuchen Sie dies:

var map = {'á': 'a', 'é': 'e', 'í': 'i', 'ó': 'o', 'ú': 'u'};
var result = 'áéíóú'.replace(/./g, function(m) { return map[m] ? map[m] : m; });

3voto

T.J. Crowder Punkte 948310

Ja, das kann man in JavaScript machen:

var str = "áéíóú";
var result = str.replace(/[áéíóú]/g, function(m) {
    switch (m) {
        case "á":
            return "a";
        case "é":
            return "e";
        case "í":
            return "i";
        case "ó":
            return "o";
        case "ú":
            return "u";
    }
});

Eine andere Möglichkeit ist eine Nachschlagetabelle:

var replacements = {
    "á": "a",
    "é": "e",
    "í": "i",
    "ó": "o",
    "ú": "u"
};

var str = "áéíóú";
var result = str.replace(/[áéíóú]/g, function(m) {
    return replacements[m];
});

Diese funktionieren, weil replace kann einen regulären Ausdruck akzeptieren, und die "Ersetzung" kann eine Funktion sein. Die Funktion erhält die übereinstimmende Zeichenfolge als Argument. Wenn die Funktion nichts zurückgibt, oder wenn sie undefined wird das Original beibehalten; wenn es etwas anderes zurückgibt, wird dieses stattdessen verwendet. Der reguläre Ausdruck /[áéíóú]/g ist eine "Zeichen"-Klasse, die "jedes dieser Zeichen" bedeutet, und die g am Ende bedeutet "global" (die gesamte Zeichenfolge).

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