次の部分文字列の一部を含むソース文字列があります。
- "最初"
- "2番目"
に応じて交換する必要があります。
- "三番"
- "前方へ"
私は次の方法でそれを行います
var output = input;
var re1 = /first/;
var re2 = /second/;
output = output.replace(re1, "third")
output = output.replace(re2, "forth")
問題は、単一の正規表現でそれを行う方法ですか?
次の部分文字列の一部を含むソース文字列があります。
に応じて交換する必要があります。
私は次の方法でそれを行います
var output = input;
var re1 = /first/;
var re2 = /second/;
output = output.replace(re1, "third")
output = output.replace(re2, "forth")
問題は、単一の正規表現でそれを行う方法ですか?
に渡された関数でそれを行うことができます.replace()
:
output = output.replace(/first|second/g, function(word) {
return word === "first" ? "third" : "fourth";
});
第二引数に関数を渡さないと無理です。
var a =function(a){if(a=="first"){ a="third" }else{ a="forth"} return a}
output = output.replace(/first|second/g, a);
次に、ワンライナーを書くだけでもかまいません。
output = output.replace(/first/g, "third").replace(/second/g, "forth");
おそらく次のようなことができます。無名関数を使用する:
var input = "This is the first... no second time that I tell you this!";
var result = input.replace(/first|second/g, function(m) {
switch(m)
{
case "first":
return "third";
case "second":
return "forth";
}
});
変数には一致が含まれ、必要に応じてさらに置換を追加できる場所m
に渡されます。switch