2011-08-23 196 views
4

如何使用正則表達式替換所有類型的換行符(CR,LF和CrLf)?使用正則表達式替換換行符

我試過不同的「\ n」和「\ r」組合,但沒有發現它們全部。

formatedString = System.Text.RegularExpressions.Regex.Replace(text, "\r\n", "[Exp 1]") 

下面的代碼做的工作,但它的錯誤我,我不能似乎替換使用正則表達式換行。

formatedString = formatedString.Replace(Environment.NewLine, "[Environment.NewLine]") ' Equals CR 
formatedString = formatedString.Replace(ControlChars.CrLf, "[ControlChars.CrLf]") ' CR and LF 
formatedString = formatedString.Replace(ControlChars.Cr, "[ControlChars.Cr]") ' Carriage Return (CR) 
formatedString = formatedString.Replace(ControlChars.Lf, "[ControlChars.Lf]") ' Line Feed (LF) 

所有的建議是最歡迎的! :)

+0

到目前爲止,我的最佳表達是; 「(\ r \ n | \ n | \ r)」 – Stefan

回答

4

\r,\n\r\n應涵蓋所有的換行符的情況。 \n\r沒有被任何系統(即我所知道的...)

在VB中,如果不使用正則表達式,你可以替換所有:

VbCr 
VbLf 
VbCrLf 

與任何行結束你喜歡(很明顯,你可以忽略從「換行/ CR」人物名單更換的首選之一)

+0

謝謝,那是一種錯字:P – Stefan

+0

那麼,該解決方案是否有效?如果解決方案有效,您能否將其標記爲答案?或者這只是你的文章中的一個錯字嗎? –

+0

你的文章激勵我寫出「(\ r \ n | \ n | \ r)」的表達方式,所以我會將其標記爲答案。 – Stefan

0

試試這個(代碼未測試) -

formatedString = Regex.Replace(text, "\r\n", "[Exp 1]", RegexOptions.Multiline) 
+0

它沒有解決我的問題。我沒有找到匹配 – Stefan

0

本質上你正在做的是正確的,除了你需要改變

formatedString = System.Text.RegularExpressions.Regex.Replace(text, "\n\r", "[Exp 1]") 

formatedString = System.Text.RegularExpressions.Regex.Replace(text, "[\n\r]", "[Exp 1]") 

只需添加[],使之匹配的任何\ R或\ n代替 「\ n \ r」。

希望這會有幫助

+0

正如@Erik A. Brandstadmoen所指出的,它必須是\ r \ n而不是其他方式。我嘗試了你的解決方案,但取而代之。取代CrLf斷行兩次。 – Stefan