9

我正在尝试使用 javascript 查找和替换文本中的换行符。

以下作品。它将字符 a 替换为字符 z。

var text = "aasdfasdf";
text= text.replace(/a/g,"z");
alert(text);

以下基于此和其他留言板上的其他帖子没有。基本上javascript不会触发:

var text = "aasdfasdf";
text= text.replace(/\n/g,"z");
alert(text);

...这是许多建议它应该起作用的帖子之一。

JavaScript:如何向 HTML 文本区域添加换行符?

顺便说一句,以下内容在 Firefox 中也不适用于我:

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

注意:我意识到文本变量中没有换行符。我只是使用一个简单的字符串进行测试。

谁能看到可能出了什么问题,或者告诉我一种真正可行的方法。

谢谢。

4

4 回答 4

14

我会通过处理\r\n(序列),然后处理\r\n通过字符类来覆盖我的赌注,如下所示:

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

第一次替换将序列\r\n变为<br />. 第二个替换用字符串替换自己找到的任何\r或字符。\n

更多关于 JavaScript 中的正则表达式的信息

于 2012-11-23T16:30:19.407 回答
2

要处理 Windows 换行符,请尝试

text = text.replace(/\r\n/g, '<br />').replace(/[\r\n]/g, '<br />');
于 2012-11-23T16:41:30.757 回答
1

ECMAScript 将字符串中的换行符标准化为“\n\r”,而 DOM 将字符串中的换行符标准化为“\n”。这两种操作系统都与这些格式无关:

  • 窗户 - CRLF
  • Unix-LF
  • 旧 Mac - CR

完成此任务的正确方法取决于您接收字符串的方式以及将其写出的方式。

于 2012-11-23T16:51:42.030 回答
1

两种类型的行尾的另一种解决方案

str.replace(new RegExp('\r?\n','g'), '<br />');
于 2013-11-21T19:17:07.813 回答