はじめに
JavaだとreplaceAllがあったので、特に困ったことがなかったですが
JavaScriptにはなかったので、文字列内で該当する全てを置換する際、ヒトクセ必要でした。
最近になってES12でreplaceAll()が使える様になったことを知ったので試してみました。
初投稿なので、優しくしてください。
とりあえず、私の環境(Mac:Chrome, FireFox, Safari どれもさっき更新しました。 と Node.js v15.14.0)は元気に↓動いてます。
やってみた。
古の技術
let str = 'いっぱい置換しろ〜〜〜なんとしても置換しろ〜〜〜頑張って置換しろ〜〜〜';
str = str.split('しろ〜〜〜').join('してくれてありがと♪♪♪');
console.log(str);
=> いっぱい置換してくれてありがと♪♪♪なんとしても置換してくれてありがと♪♪♪頑張って置換してくれてありがと♪♪♪
lodashで同じこと書いてみる。
let str = 'いっぱい置換しろ〜〜〜なんとしても置換しろ〜〜〜頑張って置換しろ〜〜〜';
str = _.join(_.split(str, 'しろ〜〜〜'),'してくれてありがと♪♪♪')
console.log(str);
=> いっぱい置換してくれてありがと♪♪♪なんとしても置換してくれてありがと♪♪♪頑張って置換してくれてありがと♪♪♪
ES12
let str = 'いっぱい置換しろ〜〜〜なんとしても置換しろ〜〜〜頑張って置換しろ〜〜〜';
str = str.replaceAll('しろ〜〜〜', 'してくれてありがと♪♪♪');
console.log(str);
=> いっぱい置換してくれてありがと♪♪♪なんとしても置換してくれてありがと♪♪♪頑張って置換してくれてありがと♪♪♪
正規表現もいける口(どうせ中身は呪文なので一切使わない。)
let str = 'いっぱい置換しろ〜〜〜なんとしても置換しろ〜〜〜頑張って置換しろ〜〜〜';
str = str.replaceAll(/しろ〜〜〜/g, 'してくれてありがと♪♪♪');
console.log(str);
=> いっぱい置換してくれてありがと♪♪♪なんとしても置換してくれてありがと♪♪♪頑張って置換してくれてありがと♪♪♪
いつも通りIEは置き去りの様でした。
おしまい
ちなみに「え?いつから?」ってなったので、こちらのページにリンクを貼ったGitHubのドキュメント更新履歴追いました。
結果ボリュームが多かったので、そんな細かいことは気にしたら負けだな。という結論に至ってます。
とても小さなことですがsplit + join
で、えっとコレで分けて繋げて・・・
ってコードからreplaceAll
で、あ〜全置換ね。と言葉として直感的に理解しやすくなるんじゃないかと思います。
ただ、フロントエンドで上記の様な文字列操作を行うことは個人的にはあまり好きではないので
できればバックエンドに実装したいです。 ^ ^
追記 6/13
@ij9tf様よりコメントをいただきましたので、修正しました。
御覧の通り私は正規表現が苦手です。