私は複数のカンマを含む文字列を持っています、そして文字列replaceメソッドは最初のものだけを変更します:
var mystring = "this,is,a,test"
mystring.replace(",","newchar", -1)
結果 :"thisnewcharis,a,test"
ドキュメントには、デフォルトですべてが置き換えられること、および「-1」もすべてを置き換えることが示されていますが、失敗します。何かご意見は?
String.prototype.replace()
functionの3番目のパラメータは標準として定義されたことがないため、ほとんどのブラウザは単純にそれを実装していません。
g
( global )フラグとともに使用することです。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"
ただ楽しみのために:
var mystring = "this,is,a,test"
var newchar = '|'
mystring = mystring.split(',').join(newchar);