Javascript:分割字符串时包含空行

时间:2011-12-07 02:08:11

标签: javascript

编辑:这是我将应用拆分的代码:

A在预标签内包含一个代码段

<pre class="codeSample">
public class Foo 
{
}

public class Bar
{
}
</pre>

这是我的jquery代码:

var content = $('.codeSample').html();
$('codeSample').html('');  //Clear to ready for new output
var preTag = $('.codeSample');
var lines = content.split('\n');

for(i=0;i<lines.length;i++)
   preTag.append('<div>' + lines[i] + '</div>');

当浏览器呈现时输出为:

public class Foo 
{
}
public class Bar
{
}

两个班级之间的额外空行消失了。

编辑:

现在,以下是解决此问题的解决方案:

var content = $('.codeSample').html().replace(/\n(?=\n)/g, '\n ');

此代码查找两个连续的\ n并在它们之间插入空格。现在,当我进行拆分时,数据结果中包含空行,但它们中包含空格。任何替代品?感谢。

编辑:

好的,我会考虑自己的解决方案。谢谢你的回复。

3 个答案:

答案 0 :(得分:1)

拆分的结果是 ['Line1','Line2','','Line3']。注意空字符串?这就是您的额外换行符

您需要将空字符串转换为换行符。

请参阅:http://jsfiddle.net/Xavura/hKsTj/#run

所以你想做这样的事情:

lines = lines.map(function(i) { return (i === '') ? '\n' : i; });

答案 1 :(得分:0)

如果您输出的是HTML,那么换行符将被视为空格,如果您想在HTML中换行,则使用<br />标记。

答案 2 :(得分:0)

通过编辑,现在的问题只是空<div>标记不会占用任何垂直空间。

可以通过在样式表中设置代码行的最小高度来解决此问题:

.codeSample div {
    min-height: 1em;
}