有没有办法用JavaScript替换每个"%20"空格.我知道如何用空格替换单个"%20"但是如何替换所有这些?
var str = "Passwords%20do%20not%20match";
var replaced = str.replace("%20", " "); // "Passwords do%20not%20match"
Run Code Online (Sandbox Code Playgroud)
iss*_*set 95
看看这个: 如何在JavaScript中替换所有出现的字符串?
简短回答:
str.replace(/%20/g, " ");
Run Code Online (Sandbox Code Playgroud)
编辑:在这种情况下,您还可以执行以下操作:
decodeURI(str)
Run Code Online (Sandbox Code Playgroud)
Emi*_*ary 51
百分比%
符号后面是两个十六进制数(UTF-8字符表示)通常表示已被编码为一个组成部分的字符串URI.这确保了否则具有特殊含义的字符不会干扰.你的情况%20
是一个空白字符立刻认出-而不是真正具有在任何意义URI这是为了避免破坏串入多个"部分"编码.
别误会我的意思,正则表达是炸弹!但是,任何值得关注的网络技术都已经在其库中提供了可用于处理此类标准的工具.为什么重新发明轮子......?
var str = 'xPasswords%20do%20not%20match';
console.log( decodeURI(str) ); // "xPasswords do not match"
Run Code Online (Sandbox Code Playgroud)
Javascript有两者decodeURI
,decodeURIComponent
并且在它们encodeURI
和encodeURIComponent
对应方面略有不同- 您应该熟悉文档.
Dav*_*ing 11
global
在regexp中使用标志:
var replaced = str.replace(/%20/g, " ");
^
Run Code Online (Sandbox Code Playgroud)
这种方法使用的是decodeURIComponent()
函数,是最可靠的一种。
var str = "Passwords%20do%20not%20match%21";
var replaced = decodeURIComponent(str); // "Passwords do not match"
console.log(replaced);
Run Code Online (Sandbox Code Playgroud)
以下是它替换的一些字符:
%20 to <space>
%3F to "?"
%21 to "!"
%23 to "#"
etc...
Run Code Online (Sandbox Code Playgroud)
Mozilla 文档中有一个很好的例子 [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI]。
请注意,如果您只想替换“%20”,请使用该replaceAll
函数:
%20 to <space>
%3F to "?"
%21 to "!"
%23 to "#"
etc...
Run Code Online (Sandbox Code Playgroud)
使用 unescape(stringValue)
var str = "Passwords%20do%20not%20match%21";
document.write(unescape(str))
Run Code Online (Sandbox Code Playgroud)
//Output
Passwords do not match!
Run Code Online (Sandbox Code Playgroud)
用 decodeURI(stringValue)
//Output
Passwords do not match!
Run Code Online (Sandbox Code Playgroud)
Space = %20
? = %3F
! = %21
# = %23
...etc
Run Code Online (Sandbox Code Playgroud)