簡體   English   中英

C#正則表達式替換多個換行符

[英]C# Regex.Replace Multiple Newlines

我有一個包含更多或更少段落的文本文件。 文本實際上不是單詞,以逗號分隔。 但這並不是那么重要。 文本文件分為幾部分; 可以有小節和小節。 節的划分由多個換行符表示,子節由換行符表示。

因此示例數據:

This is the, start of a, section
908690,246246246,246246
246246,246,246246

This is, the next, section,
sfhklj,sfhjk,4626246
4yw2,fdhds5juj,53ujj

因此,以上數據包含兩個部分,每個部分包含三個子部分。 但是,有時部分之間有多個空行。 發生這種情況時,我想將多個換行符,例如\\n\\n\\n\\n\\n\\n 我認為正則表達式可能是實現此目的的方法。 我可能還需要使用不同的換行符標准,即Unix \\n和Windows \\r\\n 我認為文件可能包含多個終端編碼。

這是我想出的正則表達式; 沒什么特別的:

Regex.Replace(input, @"([\r\n|\n]{2,})", Enviroment.NewLine + Enviroment.NewLine}

首先,這是一個好的正則表達式解決方案嗎? 我對正則表達式不太滿意。

其次,然后我想將每個部分拆分為字符串數組中的一個元素:

Regex.Split(input, Enviroment.NewLine + Enviroment.NewLine)

有沒有辦法組合這些步驟?

[\\r\\n|\\n]錯誤。 這是一個與字符\\r\\n|之一匹配的字符類 |

匹配通用行分隔符的常見習慣用法是(?:\\r\\n|[\\r\\n])(?:\\n|\\r\\n?) 它們將匹配\\r\\n (DOS / Windows), \\r (舊的Macintosh)或\\n (Unix / Linux / Mac OS X)。

我將所有行分隔符標准化為\\n ,然后拆分其中兩個或多個:

Regex.Split(Regex.Replace(source, @"(?:\r\n|[\r\n])", "\n"), @"\n{2,}")

我將只使用String.Split並首先使用雙換行符作為分隔符將文本拆分為多個部分,然后使用單個換行符作為分隔符將每個部分拆分為多個子部分。 然后,您將得到所需的陣列。 您可以將List<string>對象用作容器,並使用AddRange將split方法返回的數組添加到容器中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM