JavaScript换行符

50

这个问题中得知,这是关于如何在JavaScript字符串中表示换行符的问题。

lines = foo.value.split(/\r\n|\r|\n/);

如何将字符串拆分后,以新行符重新组合起来?

另外,如果我在Linux上使用任何换行符,然后切换到Windows,我的Web应用程序是否会崩溃?换行符变得不被识别了吗?或者浏览器会进行一些转换吗?

6个回答

62

如果您想使用换行符加入,请执行以下操作:

lines.join("\r\n");

但如果您想在HTML页面上显示,您需要将每一行都用<p></p>标签包裹起来:

html = "<p>" + lines.join("</p><p>") + "</p>";

1
在HTML中,您还可以使用lines.join("\r\n"),只要使用<pre>标签即可。 - Matthew Rideout
2
@MatthewRideout 或任何带有 white-space: pre; 属性的元素。 - maxathousand

46
您可以使用 Array 对象的 join 方法将数组元素粘合在一起形成字符串:
lines.join("\r\n");

CSS中:记得使用

white-space: pre;

这只适用于Windows吗?在Linux中,换行符不是\n吗?我猜代码仍然可以工作? - Jiew Meng
2
@JacobRelkin:在我这里使用.split('\r\n')无效,但使用.split(/\r?\n/)有效。 - SimplGy

28

如果字符串包含回车换行符,请使用 /\r?\n/ 进行拆分。

使用 '\n' 在任何浏览器和操作系统中进行合并。


18
在Node的REPL中,当你执行['foo', 'bar'].join('\n')时,输出结果会显示文字字面量\n,但是如果你运行console.log(['foo','bar'].join('\n')),你将看到预期的输出结果。希望这对其他人有所帮助。 - user153275

1

以下代码看起来是具有未来性和独立于操作系统的:

lines.join(`
`)

0

我使用 '\r' 没问题,macOS 12.6,chrome 109.0.5414.119

lines.join('\r')

0

正如所说,使用join是最好的方法,但这里也有一种较为麻烦的方式(未经测试,希望不会太过简单):

var result;

for (i=0;i<lines.length;i++){
   result+=lines[i]+"\r\n"; //depends on OS
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接