"文件撰写"删除所有重复的空格

时间:2015-05-24 12:33:00

标签: javascript

我想在使用document.write();

时保留空间
var text = "many         spaces";
document.write(text);

但输出是"许多空格"。

请问怎么做?

PS:我已尝试使用innerHTML,但它也是如此:

<p id=demo></p> 
document.getElementById("demo").innerHTML = "many      spaces";

3 个答案:

答案 0 :(得分:4)

它不是document.write,它是如何呈现空格的默认行为。 W3C规范明确defines

  

请注意,源文档中的单词之间的一系列空格可能会导致完全不同的渲染字间距(PRE元素除外)。特别是,用户代理应在生成输出字间空间时折叠输入空格序列。

如果您想保留空格,可以在<pre>标记中呈现内容:

var text = "many         spaces";
document.querySelector('pre').innerHTML = text;
<pre></pre>

...或使用white-space: pre CSS规则:

var text = "many         spaces";
document.querySelector('div').innerHTML = text;
div { white-space: pre;}
<div></div>

还有一个选项,使用&nbsp;但是我不推荐它,因为这不是相同的和普通的空白字符(因为它没有破坏)。将原始文本空间转换为&nbsp;

也可能不方便

答案 1 :(得分:2)

使用&nbsp;意味着非破坏空间;

所以写下来:

    var text = "many &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; spaces";

原因是HTML简化了文本显示。 Web编程有很多原因产生许多没有兴趣的空白区域。因此,删除重复的空格比避免重复这些重复更容易。

如果你想增加空间以便更好地展示,你应该也可以使用CSS。

答案 2 :(得分:0)

您应该使用&nbsp;而不是空格。

这就是我要做的事情:

var text = "many         spaces";
document.write(text.replace(' ', '&nbsp;'));

请注意,这不是document.write的问题,而是HTML中如何呈现空格。