javascriptのreplaceで文字列を置換する方法です。
replace()メソッドは、パターンに一致する文字列の一部または全部を指定文字で置き換えることができます。
パターンには正規表現を使用することもできます。
一部の文字を置換
let str = 'This is a pen.';
console.log(str.replace('i', '*'));
// OUTPUT: Th*s is a pen.
iを*に置換します、パターンを’i’にした場合は最初にマッチした文字のみ置換されます。
全部の文字を置換
let str = 'This is a pen.';
console.log(str.replace(/i/g, '*'));
// OUTPUT: Th*s *s a pen.
正規表現を使用してgを付けると、一致するすべての文字(i)を置換します。
全部置換したいときは正規表現にしてgを付ければOKです。
replaceAllを使用する
replaceAllを使用すると一致した文字を全部置換することができます。
let str = 'This is a pen.';
console.log(str.replaceAll('i', '*'));
// OUTPUT: Th*s *s a pen.
正規表現を覚えなくてよいので、単純に全部置換したいときはreplaceAllが便利かもです。
ただし、注意があります。
Chromeなどのブラウザなら問題ないかもですが、node.jsで利用するときはnode.jsのバージョンに注意が必要です。
replaceAll()は比較的新しいメソッドなのでnode.js v15くらいからじゃないと使用できません。
古いバージョンのnode.jsではエラーが出ます。
replace.js:9
console.log(str.replaceAll('i', '*'));
^
TypeError: str.replaceAll is not a function
その場合はreplace()を使用して、正規表現でgを付けましょう。
まとめ
JavaScriptで文字列を置換するときはreplace()かreplaceAll()を使用します。
ちなみに置換しても元の文字列は変更されません。
あくまで置換された文字列を戻り値として返すだけです。
let str = 'This is a pen.';
console.log(str.replace('i', '*'));
// OUTPUT: Th*s is a pen.
console.log(str.replace(/i/g, '*'));
// OUTPUT: Th*s *s a pen.
console.log(str.replaceAll('i', '*'));
// OUTPUT: Th*s *s a pen.
console.log(str); // 元の文字列のまま
// OUTPUT: This is a pen.