我用<BR>
標記代替\n
的所有發生,但由於某種原因輸入的文本連續有很多\n
,所以我需要將它們合併。如何用一個<BR>替換多個換行符?
基本上,如果多於1個\ n一起出現,請將其替換爲只有一個標籤。
有人可以幫助我嗎?
我用<BR>
標記代替\n
的所有發生,但由於某種原因輸入的文本連續有很多\n
,所以我需要將它們合併。如何用一個<BR>替換多個換行符?
基本上,如果多於1個\ n一起出現,請將其替換爲只有一個標籤。
有人可以幫助我嗎?
這將取代任何回車(\r
)和/或換行(\n
)的順序與單個<br />
:
string formatted = Regex.Replace(original, @"[\r\n]+", "<br />");
如果您只想替換兩個或更多項目的序列,那麼簡單的答案是使用{2,}
量詞(意思是「至少兩次重複」)而不是+
(意思是「至少一次重複」):
string formatted = Regex.Replace(original, @"[\r\n]{2,}", "<br />");
請注意,上述表達式將把普通CR + LF組合看作是兩個項目的序列。這是可能的,你要對待CR + LF作爲單個項目來代替,在這種情況下,表達變得稍微複雜些:
string formatted = Regex.Replace(original, @"(?:\r\n|\r(?!\n)|(?<!\r)\n){2,}", "<br />");
使用下面的代碼:
str = Regex.Replace(str, @"[\r\n]+", "<br />");
它很可能快於正常Replace
方法多次調用,而不是使用正則表達式可言,像這樣:
int oldLength;
do {
oldLength = str.Length;
str = str.Replace('\r', '\n');
str = str.Replace("\n\n", "\n");
} while(str.Length != oldLength);
str = str.Replace("\n", "<br />");
注意與string.replace()比使用正則表達式快得多:
string result = oldString.Replace("\n\n","\n");
result = result .Replace("\n","<br>");
這不會處理三個換行符;你需要在循環中調用它。看到我的答案。 – SLaks 2009-11-13 00:57:59
不要低估自己。如果你甚至知道什麼是正則表達式,你可能已經知道這個問題的答案。 – 2009-11-12 22:48:15