簡體   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