2

PHPで可能なように、1つの命令で多くの文字のjavascriptで文字を置き換える簡単な方法はありますか?

つまり、次のようなものです。

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

これにより、á が a に、é が e に、í が i に、というように置き換えられます。

事前にどうもありがとう、

4

3 に答える 3

7

グローバル フラグで正規表現を使用します。

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

"áéíóú".replace(/[áéíóú]/g, function(m){
    return map[m];
});
于 2012-07-06T16:26:21.550 に答える
3

あまり。これを試して:

var map = {'á': 'a', 'é': 'e', 'í': 'i', 'ó': 'o', 'ú': 'u'};
var result = 'áéíóú'.replace(/./g, function(m) { return map[m] ? map[m] : m; });
于 2012-07-06T16:26:55.617 に答える
3

はい、JavaScript でそれを行うことができます。

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";
    }
});

もう 1 つの方法は、ルックアップ テーブルです。

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

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

それらreplaceは正規表現を受け入れることができ、「置換」は関数にすることができるため機能します。この関数は、一致した文字列を引数として受け取ります。関数が何も返さない場合、または を返すundefined場合、オリジナルが保持されます。他の何かを返す場合は、代わりにそれが使用されます。正規表現/[áéíóú]/gは、「これらの文字のいずれか」を意味する「文字」クラスでありg、最後の は「グローバル」(文字列全体) を意味します。

于 2012-07-06T16:27:43.527 に答える