JS 文字列には replace() メソッドがあります。ただし、このメソッドは最初に一致した文字列のみを置き換えます。 例:
<HTML> <HEAD> <TITLE> New Document </TITLE> </HEAD> <BODY> <script> var str = "wordwordwordword"; var strNew = str.replace("word","Excel"); alert(strNew); </script> </BODY> </HTML>
すべてを置換したい場合、JS には replaceAll のようなメソッドがありません。 Replace の効果は、通常のテーブルを使用して実現できます:
str.replace(/word/g,"Excel")
g は、グローバル一致を実行します (最初の一致が見つかった後に停止するのではなく、すべての一致を検索します) ことを意味します。
<HEAD> <TITLE> New Document </TITLE> <script> function replaceAll(str) { if(str!=null) str = str.replace(/word/g,"Excel") return str; } </script> </HEAD> <BODY> <script> var str = "wordwordwordword"; var strNew = str.replace("word","Excel"); strNew = replaceAll(str); alert(strNew); </script> </BODY> </HTML>
上記の書き方には、以下のような書き方があります。
str.replace(new RegExp("word","gm"),"Excel")
g は、グローバル一致を実行します (最初の一致が見つかった後に停止するのではなく、すべての一致を検索します)。
m は複数行のマッチングを実行します。
さらに、Stirng オブジェクトのプロトタイプ メソッドを追加することもできます。
String.prototype.replaceAll = function(s1,s2){ return this.replace(new RegExp(s1,"gm"),s2); }
こうすることで、replace メソッドを使用するのと同じように replaceAll を使用できます
str.replaceAll("word","Excel");
まとめると、方法は 3 つあります
1.str.replace(/oldString/g,newString)
2. str.replace(new RegExp(oldString,"gm"),newString)
3. String オブジェクトのプロトタイプ メソッド replaceAll を追加します