プロプログラマ

プログラマーを職業としてます。 Flex,Air,C#,Oracle,HTML+JSの言語ノウハウを中心に情報発信していきます

[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も使えるようになると思いますが、それまではこのような記述で対応できると思います。


 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください