javascript在连续出现时替换每个出现的字符

时间:2017-03-17 13:49:53

标签: javascript regex replace

所以我想更换每个' +'在这个字符串中的空格' '

EST++++++++++%5E0+90310++162

所以我想要的输出是:

EST %5E0 90310 162

我试过这个:

var l = l.replace(/\+/g, " ");

除了连续发生之外,它们都是可行的,它用一个空格替换所有连续的+。

所以我得到的不是我想要的: EST %5E0 90310 162

2 个答案:

答案 0 :(得分:3)

我的通灵能力告诉我你实际上已经获得了多个空格,但是你将它显示为HTML并且在那里(如解释here)连续的空格被折叠到一个空格。

编辑:事实上,当你发布它时,你的问题本身就会发生这种情况,并且在这个帖子中引起了一些混淆;)

如果要保留空白,请将其替换为不间断的空格(HTML中的&nbsp; - 但这将修改字符串的值)或以不同的方式显示它以保留空格,例如,在包含元素上使用CSS属性<pre>white-space: pre;元素内部。

见这个例子:

&#13;
&#13;
var value = 'EST++++++++++%5E0+90310++162'.replace(/\+/g, " ");

document.getElementById('element1').innerHTML = value;
document.getElementById('element2').innerHTML = value;
&#13;
<p>
  <span id="element1"></span>
</p>
<p>
  <pre id="element2"></pre>
</p>
&#13;
&#13;
&#13;

(或者,如果您使用.innerHTML分配内容,就像我在我的代码段中所做的那样,解决方案就像更改为.innerText一样简单。但我不知道你在哪里完全使用此代码,以便此解决方案不适用。)

答案 1 :(得分:0)

对我来说工作正常,也许你输出值的方法是修剪多余的空间?

var l = 'EST++++++++++%5E0+90310++162'

//'EST          %5E0 90310  162'

l = l.replace(/\+/g, " ");
console.log(l);