[TypeScript] 文字列置き換え~replaceAllの代わり
TypeScriptで文字列置き換えreplaceAllを記載するとエラーになります。
Property 'replaceAll' does not exist
Chromeの開発コンソールではエラーにならずに実行できるのでナゼ??となります。
現状TypeScriptではreplaceAllが実装されていません。
文字列中の同じ文字をすべて置き換えしたい場合は、代わりの実装をする必要があります。
下記に3パターン記載します。
const source = 'aaaaabbbbb'; console.log('resultX', source.replace('a', '@')); // → "resultX", "@aaaabbbbb" console.log('result1', source.replace(/a/g, '@')); // → "result1", "@@@@@bbbbb" console.log('result2', source.split('a').join('@')); // → "result2", "@@@@@bbbbb" const key = 'a' console.log('result3', source.replace(new RegExp(key, 'g'), '@')); // → "result3", "@@@@@bbbbb"
- 通常のreplaceでは最初に見つかった1文字のみを置き換えします。(resultX)
- 複数の文字をすべて置き換えるには正規表現で指定します。(result1)
- replaceを使わずに、一度対象文字でsplitし、置き換え文字を挟んでjoinするという技もあります。(result2)
実現はできますが、コードを見ても何をやっているのか分かりづらいので、コメントで補足必要かも知れません。 - replaceでの正規表現中には変数は使えませんので、使いたい場合は、RegExpで指定します。(result3)
そのうちにreplaceAllも使えるようになると思いますが、それまではこのような記述で対応できると思います。
== ランキングに参加しています。ぜひクリックお願いします ==
GoogleChrome94とウイルスバスターの組み合わせで、Chromeが起動しない不具合 (解決方法) GoogleChrome94とウイルスバスターの組み合わせで、Chromeが起動しない不具合 (解決方法2)