用空格字符替换+

时间:2014-07-24 13:23:06

标签: javascript regex

原始问题:

我从Java servlet向Web客户端发送带有Unicode字符串(许多不同语言和md5哈希)的JSON字符串。 I URLEncoder.encode("我的字符串"," UTF-8")创建JSON数组之前的字符串。

(我几乎可以肯定这种方法也有问题,但我可能做了一次编码太多了)

反正: 在javascript中我运行unescape()来获取结果,但空格(编码为+)不会被解码。

所以我在调用unescape()之前使用.replace(/\+/g,' ')替换+空格。

可是:

省略前导和尾随+符号 和 连续的+符号被一个空格所取代。

请帮我(或者介意):)

4 个答案:

答案 0 :(得分:1)

使用此

var string="+Salvis+Sumeet+Jacob,Srlawrjhkjh+"
var str=string.replace(/[+ ]+/g, " ");
console.log(str)

DEMO HERE

答案 1 :(得分:0)

你的正则表达式对我有用,

> "++foo+bar++".replace(/\+/g," ");
'  foo bar  '

答案 2 :(得分:0)

所以我想

  

省略前导+尾随+符号,连续+符号由单个空格替换。

是您想要实现的目标,而不是您目前获得并希望避免的结果。如果是这样的话那么

.replace(/\++/g,' ').trim()

将使用单个空格替换每个或多个+个字符,然后删除前导/尾随空格。

"++foo+bar++baz+".replace(/\++/g,' ').trim()
// "foo bar baz"

答案 3 :(得分:0)

unescape()没有将+更改为空格的原因是因为......它不是其规范的一部分。

ascii-space-character-as-plus-sign编码相当不标准(虽然受到广泛支持),并且可以追溯到早期版本的HTML。

根据unescape()escape()的规范,unescape()更改的唯一内容是%XX%uXXXX形式的十六进制转义序列。 escape()用一些十六进制转义序列替换一小部分无限制字符之外的unicode字符; unescape(),当然,只是改变了操作。