有没有办法用JavaScript替换每个“%20”空格。我知道如何用空格替换单个“%20”但是如何替换所有这些?
var str = "Passwords%20do%20not%20match";
var replaced = str.replace("%20", " "); // "Passwords do%20not%20match"
答案 0 :(得分:88)
检查一下: How to replace all occurrences of a string in JavaScript?
简短回答:
str.replace(/%20/g, " ");
编辑: 在这种情况下,您还可以执行以下操作:
decodeURI(str)
答案 1 :(得分:48)
百分比%
后跟两个十六进制数字(UTF-8字符表示)通常表示已编码为 URI 。这确保了否则具有特殊含义的字符不会干扰。在你的情况下,%20
可以立即识别为空白字符 - 而真正在 URI 中有任何意义,它被编码以避免将字符串分解为多个“部分”。
别误会我的意思,regex is the bomb!但是,任何值得关注的网络技术都已经在其库中提供了工具,可以为您处理standards这样的问题。为什么重新发明轮子......?
var str = 'xPasswords%20do%20not%20match';
console.log( decodeURI(str) ); // "xPasswords do not match"
Javascript同时decodeURI
和decodeURIComponent
的encodeURI
和encodeURIComponent
对应点略有不同 - 您应该熟悉这些文档。
答案 2 :(得分:11)
在regexp中使用global
标志:
var replaced = str.replace(/%20/g, " ");
^
答案 3 :(得分:1)
使用unescape(stringValue)
var str = "Passwords%20do%20not%20match%21";
document.write(unescape(str))
//Output
Passwords do not match!
decodeURI(stringValue)
仅适用于space(“”)其他字符无法正常工作
Space = %20
? = %3F
! = %21
# = %23
...etc
答案 4 :(得分:0)
如果要使用jQuery,可以使用.replaceAll()
答案 5 :(得分:0)
如果您需要在结尾处删除空格,则可以采用以下解决方案: 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 "))
答案 6 :(得分:0)
这个方法使用了 decodeURI() 方法,这是最好的方法。
var str = "Passwords%20do%20not%20match%21";
alert(decodeURI(str))
这是它的工作原理:
Space = %20
? = %3F
! = %21
# = %23
...etc
在 mozzila 文档中有一个很好的例子 [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI]