Javascript заменит все " %20" пробелом

Есть ли способ заменить каждый " %20" пробелом с помощью JavaScript. Я знаю, как заменить один " %20" пробелом, но как заменить все из них?

var str = "Passwords%20do%20not%20match";   
var replaced = str.replace("%20", " "); // "Passwords do%20not%20match"

Ответы

Ответ 2

Знак процента % за которым следуют два шестнадцатеричных числа (представление символа UTF-8), обычно обозначает строку, которая была закодирована как часть URI. Это гарантирует, что персонажи, которые в противном случае имели бы особый смысл, не мешали. В вашем случае %20 сразу распознается как символ пробела - хотя на самом деле он не имеет никакого значения в URI, он кодируется, чтобы не сломать строку на несколько "частей".

Не поймите меня неправильно, регулярное выражение - это бомба ! Однако любые веб-технологии, о которых стоит заботиться, уже будут иметь инструменты, доступные в этой библиотеке, для обработки таких стандартов, как это для вас. Зачем изобретать колесо...?

var str = 'xPasswords%20do%20not%20match';
console.log( decodeURI(str) ); // "xPasswords do not match"

Javascript имеет как decodeURI и decodeURIComponent которые немного отличаются друг от друга по отношению к их encodeURI и encodeURIComponent аналогам - вы должны ознакомиться с документацией.

Ответ 3

Использовать global флаг в regexp:

var replaced = str.replace(/%20/g, " ");
                                ^

Ответ 4

Если вы хотите использовать jQuery, вы можете использовать .replaceAll()

Ответ 5

используя unescape(stringValue)

var str = "Passwords%20do%20not%20match%21";
document.write(unescape(str))

Ответ 6

Если вам нужно удалить пробелы в конце, вот решение: 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   "))