【JavaScript】検索文字列を全置換する方法【replaceAll】


最初の検索文字しか置き換わらない

標準の方法では一番最初にマッチした文字列のみが置き換えられます。replaceFirst的な挙動ですね。

"a b c".replace(' ', '-');  // "a-b c"

全て置き換え

一致したテキスト全てを置き換えたい場合は、正規表現を用いる必要があります。

"a b c".replace(/ /g, '-');  // "a-b-c"

gでグローバルマッチを行っている所が肝です。これで一致した全ての文字が置換えの対象になります。replaceAllやgsub的な置換えが実現されるわけですね。JavaScriptにはreplaceAllメソッドがないためこのようなテクニックが必要となります。

正規表現の記法に注意

正規表現を用いるの際には、.*等の特殊な文字を置き換える際にバックスラッシュ\文字によるエスケープ処理が必要になるので注意してください。

"a.b.c".replace(/\./g, '-');  // "a-b-c"
スポンサーリンク

split joinイディオム

split関数とjoin関数のあわせ技でも同等の全置換が実現出来ます。

"a b c".split(' ').join('-');  // "a-b-c"

解説

splitは文字列の分割結果を配列形式で返す関数です。そしてその結果をjoinメソッドで結合しています。

"a b c".split(' ')        // ["a", "b", "c"]
["a", "b", "c"].join('-') // "a-b-c"

広告