web-dev-qa-db-ja.com

JavaScript .replaceは最初の一致のみを置き換えます

var textTitle = "this is a test"
var result = textTitle.replace(' ', '%20');

しかし、置換関数は「」の最初のインスタンスで停止し、

結果:"this%20is a test"

私がどこで間違っているかについてのアイデアは、その簡単な修正方法です。

106
Yardstermister

次のような/gが必要です。

var textTitle = "this is a test";
var result = textTitle.replace(/ /g, '%20');

console.log(result);

ここで遊ぶことができます 、デフォルトの.replace()動作は最初のマッチのみを置き換えることです、 /g修飾子 (グローバル)はすべての出現を置き換えます。

196
Nick Craver
textTitle.replace(/ /g, '%20');
7
Nikita Rybak

最初の引数に文字列の代わりに正規表現を使用してみてください。

"this is a test".replace(/ /g,'%20') //#=> "this%20is%20a%20test"

4
J. Holmes

w3schoolsから

Replace()メソッドは、部分文字列(または正規表現)と文字列の間のmatchを検索し、一致した部分文字列を新しい部分文字列で置き換えます

ここで正規表現を使用する方が良いでしょう:

textTitle.replace(/ /g, '%20');

そのためには、正規表現のgフラグを使用する必要があります。

var new_string=old_string.replace( / (regex) /g,  replacement_text);

あれ

2
Subham Debnath

同じ、stringからの「汎用」正規表現が必要な場合:

const textTitle = "this is a test";
const regEx = new RegExp(' ', "g");
const result = textTitle.replace(regEx , '%20');
console.log(result); // "this%20is%20a%20test" will be a result
    
0
Nigrimmist