繁体   English   中英

删除所有换行符,但只删除一个换行符?

[英]Remove all line-breaks, but except only one break?

我有以下文字由用户发送,带有换行符

Text of example in line 1.
(break line)
(break line)
(break line)
The text is very nice...
(break line)
(break line)
The end.

预期结果:

Text of example in line 1.
The text is very nice...
The end.

NOT: Text of example in line 1. The text is very nice... The end.

我如何在通过PHP的AJAX接收的JavaScript( str.replace )中做到这一点

$text = strip_tags($text, '<br>');

谢谢您的回答! 但是我测试了所有..然后我发现我的DIV正在生成HTML代码,我相信这就是为什么它不起作用(RegEx)。 如何忽略HTML元素以使文本带有换行符? 在此处输入图片说明

您可以使用正则表达式替换。

str = str.replace(/\n{2,}/g, "\n");

{2,}表示匹配前一个表达式的2个或多个。 因此,包含2个或更多换行符的任何序列都将替换为一个换行符。

尽管@Barmar答案是正确的,但它不适用于不同的OS /平台。

不同的OS使用不同的字符组合用作换行符。

  1. Windows: \\r\\n = CR LF
  2. Unix / Linux: \\n = LF
  3. Mac: \\r = CR

参见\\ r \\ n,\\ r,\\ n它们之间有什么区别?

我将建议以下可在各个平台上运行的RegEx。

str = str.replace(/(\r\n?|\n){2,}/g, '$1');

Live RegEx演示

说明:

  1. () :捕获组
  2. \\r\\n? :匹配\\r后跟\\n可选)。 因此匹配
    • \\r\\n
    • \\r
  3. | :RegEx中的OR条件
  4. \\n :匹配\\n
  5. {2,} :匹配先前的字符两次或更多次
  6. g :全局标志
  7. $1 :第一个捕获的组,即OS支持的单个换行符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM