1. ホーム
  2. ジャバスクリプト

[解決済み] JavaScript - 文字列内のすべてのカンマを置換する [重複].

2022-03-14 03:51:24

質問

カンマが複数ある文字列があるのですが、文字列の置換メソッドでは、最初の1つしか変更できません。

var mystring = "this,is,a,test"
mystring.replace(",","newchar", -1)

結果 : "thisnewcharis,a,test"

ドキュメントによると、デフォルトではすべてを置換し、"-1"もすべてを置換することを示していますが、失敗しています。何か良い方法はないでしょうか?

解決方法は?

の第3パラメータは String.prototype.replace() 関数は標準として定義されていないため、ほとんどのブラウザは単に実装していません。

最良の方法は 正規表現 と共に g ( グローバル ) のフラグを設定します。

var myStr = 'this,is,a,test';
var newStr = myStr.replace(/,/g, '-');

console.log( newStr );  // "this-is-a-test"

まだ問題がありますか?

注意しなければならないのは、正規表現では エスケープする必要がある特殊文字 . 例えば、ドット( . ) 文字を使用する場合は /\./ 正規表現の構文では、ドットは任意の1文字(行末を除く)にマッチするからです。

var myStr = 'this.is.a.test';
var newStr = myStr.replace(/\./g, '-');

console.log( newStr );  // "this-is-a-test"

変数を置換文字列として渡す必要がある場合、正規表現リテラルの代わりに RegExp オブジェクトと コンストラクタの第一引数に文字列を渡します。 . 通常の文字列エスケープルール(特殊文字の前に \ が必要です。

var myStr = 'this.is.a.test';
var reStr = '\\.';
var newStr = myStr.replace(new RegExp(reStr, 'g'), '-');

console.log( newStr );  // "this-is-a-test"