[英]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.