如何用Javascript中的空格替换?

时间:2015-10-21 20:59:32

标签: javascript jquery

我想用简单的空格“”代替我的代码中的In [1]: dict = {'a': 1, 'b': 2, 'c': 3 } In [2]: keys = ['b', 'c', 'a'] In [3]: [dict[key] for key in keys] Out[3]: [2, 3, 1] 。这些事情实际上并不相同。

我该怎么做?

JsFiddle

此代码不起作用。

HTML

' '

JS

<p>No Space</p>
<p>&nbsp;1 Space</p>
    <p>&nbsp;&nbsp;2 Spaces</p>
        <p>&nbsp;&nbsp;&nbsp;3 Spaces</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;4 Spaces</p>

4 个答案:

答案 0 :(得分:4)

如果你看一下源代码,jQuery用&nbsp;替换NonBreakingSPaces " "之后:

<p>No Space</p>
<p> 1 Space</p>
<p>  2 Spaces</p>
<p>   3 Spaces</p>
<p>    4 Spaces</p>

所以实际的空间字符存在!!

为什么文件中没有显示空格?

文字字符串字符之前的嵌套空格或空格之间的主要区别是由浏览器使用它主要是旧rule以防止由草率编辑创建的不准确的内容空间,但不仅如此!想象一下,你在一个未经明确的(标准)HTML代码中看到的所有空格和换行符都显示在结果中!你将被迫写上oneliners。

因此,如果您没有使用自动换行样式white-space: pre-wrap;或类似<pre>的元素来保留您的文字空间,浏览器将为您清理渲染的内容空间。

<pre>
<p>No Space</p>
<p> 1 Space</p>
<p>  2 Spaces</p>
<p>   3 Spaces</p>
<p>    4 Spaces</p>
</pre>

使用pre-wrap保留字面空格:

body{ white-space: pre-wrap; }
<p>No Space</p>
<p> 1 Space</p>
<p>  2 Spaces</p>
<p>   3 Spaces</p>
<p>    4 Spaces</p>

或者您将使用您要删除的内容:&nbsp;

https://en.wikipedia.org/wiki/Non-breaking_space
https://en.wikipedia.org/wiki/Standard_Generalized_Markup_Language
https://developer.mozilla.org/en-US/docs/Web/CSS/white-space
https://developer.mozilla.org/en-US/docs/Web/CSS/word-break https://developer.mozilla.org/en-US/docs/Web/CSS/word-wrap

答案 1 :(得分:2)

您的代码运行正常,请将" "替换为"s"或其他一些字母进行测试,以了解该代码的替换方式。

段落标记中的任意数量的空格仅计为一个空格。

<p>标记替换为<span>,您将看到您的替换已有效。

http://jsfiddle.net/93jmn65f/

HTML:

<p>No Space</p>
<span>&nbsp;&nbsp;&nbsp;&nbsp;4 Spaces</span>
    <p>&nbsp;&nbsp;2 Spaces</p>
        <p>&nbsp;&nbsp;&nbsp;3 Spaces</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;4 Spa     ces</p>

JS:

$(document).ready(function() {
    $('p').each(function(){
      $(this).html($(this).html().replace(/&nbsp;/gi,"s"));
    });
});

答案 2 :(得分:0)

在textContent:

上使用正则表达式
$(document).ready(function() {
  var re = new RegExp(String.fromCharCode(160), "gi");
  $('p').each(function(){
    $(this).html($(this)[0].textContent.replace(re, " "));
  });
});

See fiddle

答案 3 :(得分:-1)

可能发生的事情是文字&amp; nbsp;在编译JS之前,javascript正在被解码。解决此问题的一种方法是将其放入单独的.js文件中,而不是HTML中的内联。另一种方法是尝试将其表示为/&amp;nbsp;/

(顺便说一句,我必须在这个文本框中输入“&amp; amp; nbsp;”以显示上面的“&amp; nbsp;”...我不得不加倍&amp; amp; s来说明这里但我没有必要在code ticks内做到这一点。只是一个奇怪的SO。)