JavaScript .replace заменяет только первый матч - PullRequest
101 голосов
/ 09 июля 2010
var textTitle = "this is a test"
var result = textTitle.replace(' ', '%20');

Но функции замены останавливаются на первом экземпляре "", и я получаю

Результат: "this%20is a test"

Любые идеи о том, где я иду не так, я уверен, это просто исправить.

Ответы [ 7 ]

187 голосов
/ 09 июля 2010

Вам нужно /g там, вот так:

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

console.log(result);

Вы можете поиграть с ним здесь , по умолчанию .replace() поведение заменяет только первое совпадение, модификатор /g (global) говорит ему заменить все вхождения .

7 голосов
/ 09 июля 2010
textTitle.replace(/ /g, '%20');
4 голосов
/ 09 июля 2010

Попробуйте использовать регулярное выражение вместо строки для первого аргумента.

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

2 голосов
/ 09 июля 2010

Из школ

Метод replace () ищет совпадение между подстрокой (или регулярным выражением) и строкой и заменяет сопоставленную подстроку новой подстрокой

Было бы лучше использовать регулярное выражение здесь:

textTitle.replace(/ /g, '%20');
1 голос
/ 12 марта 2018

Для этого вам нужно использовать данный флаг regex .... Как это:

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

Это ш

0 голосов
/ 09 июля 2019

То же самое, если вам нужно "универсальное" регулярное выражение из строки:

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 голосов
/ 09 июля 2010

Попробуйте использовать replaceWith() или replaceAll()

http://api.jquery.com/replaceAll/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...