Javascript用空格替换所有"%20"

use*_*009 45 javascript

有没有办法用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)

  • 对我来说,替换不起作用,但decodeURI帮助了我. (2认同)

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并且在它们encodeURIencodeURIComponent对应方面略有不同- 您应该熟悉文档.

  • 我很惊讶地发现这是唯一没有尝试实际替换字符串中的东西的答案.这是处理这种情况的正确方法. (5认同)
  • 完美,谢谢,这应该是接受的答案imho (4认同)

Dav*_*ing 11

global在regexp中使用标志:

var replaced = str.replace(/%20/g, " ");
                                ^
Run Code Online (Sandbox Code Playgroud)


Tia*_*gel 9

这种方法使用的是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)


Ram*_*vam 7

使用 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)