JavaScriptにはreplace()
、部分文字列を置き換えるためのStringオブジェクトのメソッドがあります。このメソッドは2つの引数を持つことができます。最初の引数は文字列または正規表現パターン(regExpオブジェクト)で、2番目の引数は文字列または関数です。replace()
両方の文字列引数を持つメソッドの例を以下に示します。
var text = 'one, two, three, one, five, one';
var new_text = text.replace('one', 'ten');
console.log(new_text) //ten, two, three, one, five, one
最初の引数が文字列の場合、上記の例のように最初に出現した部分文字列のみが置き換えられることに注意してください。サブストリングのすべての出現を置き換えるには、g
(グローバル)フラグを使用して正規表現を提供する必要があります。グローバルフラグを指定しない場合、最初の引数として正規表現を指定しても、部分文字列の最初の出現のみが置き換えられます。one
上記の例のすべてのを置き換えましょう。
var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, 'ten');
console.log(new_text) //ten, two, three, ten, five, ten
正規表現パターンを引用符で囲まないでください。これにより、regExpオブジェクトではなく文字列になります。大文字と小文字を区別しない置換i
を行うには、パターンで大文字と小文字を区別しないようにする追加のフラグを提供する必要があります。その場合、上記の正規表現はになります/one/gi
。i
ここにフラグが追加されていることに注意してください。
2番目の引数に関数があり、一致する場合、関数は3つの引数で渡されます。関数が取得する引数は、一致、一致の位置、および元のテキストです。その一致を置き換える必要があるものを返す必要があります。例えば、
var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, function(match, pos, text){
return 'ten';
});
console.log(new_text) //ten, two, three, ten, five, ten
2番目の引数として関数を使用して、置換テキストをより詳細に制御できます。
str_replace
は同じ長さの2つの配列も受け入れることに気付きませんでした。最初の配列の各文字列は、同じインデックスの2番目の配列の文字列に置き換えられます。これまでに見つけた、JavaScriptでのこの正確な動作を模倣する唯一の正しい関数については、stackoverflow.com / a / 5069776/296430を参照してください。