在JavaScript中替换换行符

22

我试图将json对象中的\r\n字符替换为<br />,以便在网站上显示。

我尝试了以下代码:

myString = myString.replace("\\r?\\n", "<br />");

但是这似乎没有任何作用。当我将正则表达式替换为其他内容(比如"a"),替换按预期工作。有什么想法,为什么对于换行符不起作用?


5
为什么不直接将字符串放入 <pre> 标签中,这样可以保留空格呢? - Matt Ball
2
或者在你填充文本的任何元素上使用CSS white-space: pre; - James
4个回答

51

试试这个:

myString = myString.replace(/[\r\n]/g, "<br />");

更新:如评论区下面Pointy所说,这将用两个<br />替换一个\r\n序列,正确的正则表达式应该是:

myString = myString.replace(/\r?\n/g, "<br />");

4
这会奏效,但很可能完全符合原帖的要求。问题中几乎是正则表达式:/\r?\n/g将用单个<br>替换任何单个换行符可选地在回车符之前出现。相反,您的正则表达式将用两个<br>标签替换CR-LF序列。 - Pointy
哦,对不起。我读成了“\r或\n”而不是问题,并没有考虑到它。我会修正答案的,谢谢。 - Felipe

3

CSS:

 white-space: pre-wrap;

这是一种更为高效的方法。

2

try replace(/\r\n|\n/, '<br />')


1
这只替换了第一次出现的。将其更改为以下内容以替换所有新行: replace(/\r\n|\n/g, "<br />"); - Jason Siffring

1
这对我有效:

str = str.replace(/\\n|\\r\\n|\\r/g, '<br/>');

使用双斜杠


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