Ответ 1
Проверьте это: Как заменить все вхождения строки в JavaScript?
Короткий ответ:
str.replace(/%20/g, " ");
EDIT: в этом случае вы также можете сделать следующее:
decodeURI(str)
Есть ли способ заменить каждый " %20" пробелом с помощью JavaScript. Я знаю, как заменить один " %20" пробелом, но как заменить все из них?
var str = "Passwords%20do%20not%20match";
var replaced = str.replace("%20", " "); // "Passwords do%20not%20match"
Проверьте это: Как заменить все вхождения строки в JavaScript?
Короткий ответ:
str.replace(/%20/g, " ");
EDIT: в этом случае вы также можете сделать следующее:
decodeURI(str)
Знак процента %
за которым следуют два шестнадцатеричных числа (представление символа UTF-8), обычно обозначает строку, которая была закодирована как часть URI. Это гарантирует, что персонажи, которые в противном случае имели бы особый смысл, не мешали. В вашем случае %20
сразу распознается как символ пробела - хотя на самом деле он не имеет никакого значения в URI, он кодируется, чтобы не сломать строку на несколько "частей".
Не поймите меня неправильно, регулярное выражение - это бомба ! Однако любые веб-технологии, о которых стоит заботиться, уже будут иметь инструменты, доступные в этой библиотеке, для обработки таких стандартов, как это для вас. Зачем изобретать колесо...?
var str = 'xPasswords%20do%20not%20match';
console.log( decodeURI(str) ); // "xPasswords do not match"
Javascript имеет как decodeURI
и decodeURIComponent
которые немного отличаются друг от друга по отношению к их encodeURI
и encodeURIComponent
аналогам - вы должны ознакомиться с документацией.
Использовать global
флаг в regexp:
var replaced = str.replace(/%20/g, " ");
^
Если вы хотите использовать jQuery, вы можете использовать .replaceAll()
используя unescape(stringValue)
var str = "Passwords%20do%20not%20match%21";
document.write(unescape(str))
Если вам нужно удалить пробелы в конце, вот решение: https://www.geeksforgeeks.org/urlify-given-string-replace-spaces/
const stringQ1 = (string)=>{
//remove white space at the end
const arrString = string.split("")
for(let i = arrString.length -1 ; i>=0 ; i--){
let char = arrString[i];
if(char.indexOf(" ") >=0){
arrString.splice(i,1)
}else{
break;
}
}
let start =0;
let end = arrString.length -1;
//add %20
while(start < end){
if(arrString[start].indexOf(' ') >=0){
arrString[start] ="%20"
}
start++;
}
return arrString.join('');
}
console.log(stringQ1("Mr John Smith "))