概要: このチュートリアルでは、文字列中のすべての部分文字列を置換する方法を学びます。
String 型は、文字列中のすべての部分文字列を置換し、文字列の新しいバージョンを返すことができるreplace()メソッドとreplaceAll()メソッドを提供します。
どちらのメソッドも元の文字列を変更せず、部分文字列が新しい部分文字列に置き換えられた新しい文字列を返すことに注意してください。
1) replace() メソッドを使用する
次の例では、replace()メソッドを使用して、message変数内の文字列'JS'を'JavaScript'に置き換えます。
const message = 'JS will, JS will, JS will rock you!';
const result = message.replace('JS','JavaScript');
console.log(result);Code language: JavaScript (javascript)出力
JavaScript will, JS will, JS will rock you!
出力から明らかなように、replace()メソッドは文字列内のJSの最初の出現箇所のみを置き換えます。
'JS'文字列のすべての出現箇所を置換するには、検索する文字列を正規表現に変換し、グローバルフラグ(g)を次のように使用します。
const message = 'JS will, JS will, JS will rock you!';
const result = message.replace(/JS/g,'JavaScript');
console.log(result);Code language: JavaScript (javascript)出力
"JavaScript will, JavaScript will, JavaScript will rock you!
"Code language: JSON / JSON with Comments (json)部分文字列のすべての出現箇所を置換し、大文字と小文字を無視する場合は、正規表現にiフラグを追加する必要があります。
const message = 'JS will, js will, Js will rock you!';
const result = message.replace(/JS/gi,'JavaScript');Code language: JavaScript (javascript)出力
"JavaScript will, JavaScript will, JavaScript will rock you!"Code language: JSON / JSON with Comments (json)2) replaceAll() メソッドを使用する
replaceAll()メソッドは、文字列中のすべての部分文字列を置換し、新しい文字列を返します。例えば
const message = 'JS will, JS will, JS will rock you!';
const result = message.replaceAll('JS','JavaScript');
console.log(result);Code language: JavaScript (javascript)出力
"JavaScript will, JavaScript will, JavaScript will rock you!"Code language: JSON / JSON with Comments (json)大文字と小文字に関係なく、文字列中の部分文字列のすべての出現箇所を置換する場合は、giフラグを付けた正規表現を使用します。
const message = 'JS will, Js will, js will rock you!';
const result = message.replaceAll(/JS/gi,'JavaScript');
console.log(result);Code language: JavaScript (javascript)結果
"JavaScript will, JavaScript will, JavaScript will rock you!"Code language: JSON / JSON with Comments (json)replaceAll()メソッドはすべてのブラウザでサポートされているわけではないことに注意してください。そのため、使用する前にブラウザの互換性を確認する必要があります。
まとめ
文字列中のすべての部分文字列を新しい文字列に置き換えるには、replace()メソッドまたはreplaceAll()メソッドを使用できます。
replace(): 部分文字列を正規表現に変換し、gフラグを使用します。replaceAll()メソッドの方がより簡単です。
大文字と小文字を無視するには、正規表現でiフラグを使用します。