2012-08-01 43 views
0

我想用空字符串「」替換文件中的換行符(Lf)。但是,我不希望它也取代CrLf中的Lf(行尾標誌)。使用空字符串替換換行符(lf)而不替換crlf中的lf C#

我的想法是這樣的:

fileContent.Replace("\n",""); 

的代碼行以上將取代CRLF低頻爲Cr,所以我不希望出現這種情況。請給我一些正則表達式的建議,它忽略了CrLf中的Lf。

非常感謝。

PS:邏輯改變了。我用這個:

fileContent = Regex.Replace(fileContent, @"\r\n(?=>)|(?<!\""\r)\n", ""); 

全部更換後>出現空字符串(「」)的CRLF和替換所有換行符(LF),其後面沒有「鉻與空字符串(」「)。這是正確的嗎?謝謝

回答

3

除了ot她Regular Expression答案你可以只使用一個Negative Look-Behind避免捕捉不必要的數據:

string result = Regex.Replace(fileContent, @"(?<!\r)\n+", ""); 
+0

+1使用'lookbehind' – Ria 2012-08-01 04:36:22

+0

謝謝你的有用的信息。 – Steven 2012-08-01 12:03:13

+0

邏輯改變了。我用這個'fileContent = Regex.Replace(fileContent,@「\ r \ n(?=>)|(?<!\」「\ r)\ n」,「」);'替換出現的所有CrLf後用空字符串(「」),並替換所有沒有跟隨「鉻與空字符串(」「)的行(Lf)。是否正確?謝謝 – Steven 2012-08-01 13:28:19

2

您可以使用一個正則表達式,下面的RegEx匹配\ n字符,它們位於輸入的開頭或以\ r開頭,它捕獲組中\ n之前的字符所以它可以重新插入到字符串中

string result = Regex.Replace(fileContent, @"(^|[^\r])\n", "$1");