var textTitle = "this is a test" var result = textTitle.replace(' ', '%20');
Но функции замены останавливаются на первом экземпляре "", и я получаю
Результат: "this%20is a test"
"this%20is a test"
Любые идеи о том, где я иду не так, я уверен, это просто исправить.
Вам нужно /g там, вот так:
/g
var textTitle = "this is a test"; var result = textTitle.replace(/ /g, '%20'); console.log(result);
Вы можете поиграть с ним здесь , по умолчанию .replace() поведение заменяет только первое совпадение, модификатор /g (global) говорит ему заменить все вхождения .
.replace()
textTitle.replace(/ /g, '%20');
Попробуйте использовать регулярное выражение вместо строки для первого аргумента.
"this is a test".replace(/ /g,'%20') // # => "this% 20is% 20a% 20test"
"this is a test".replace(/ /g,'%20')
Из школ
Метод replace () ищет совпадение между подстрокой (или регулярным выражением) и строкой и заменяет сопоставленную подстроку новой подстрокой
Было бы лучше использовать регулярное выражение здесь:
Для этого вам нужно использовать данный флаг regex .... Как это:
var new_string=old_string.replace( / (regex) /g, replacement_text);
Это ш
То же самое, если вам нужно "универсальное" регулярное выражение из строки:
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
Попробуйте использовать replaceWith() или replaceAll()
replaceWith()
replaceAll()
http://api.jquery.com/replaceAll/