我剛剛發現的Roslyn
源代碼,我看到了一個代碼片段看起來是這樣的:在這段代碼中使用do-while循環有什麼意義?
var text = stringBuilder.ToString();
int length;
do
{
length = text.Length;
text = text.Replace("{\r\n\r\n", "{\r\n");
} while (text.Length != length);
它看起來奇我因爲String.Replace
方法,將替換指定字符串的所有出現的新值在一個time.So這個循環執行的第一次,執行更改,然後再進行第二次執行,做什麼都不。然後,它結束。那麼爲什麼要使用loop
,而不是僅僅寫了一點:
var text = stringBuilder.ToString();
text = text.Replace("{\r\n\r\n", "{\r\n");
或者更短:
var text = stringBuilder.ToString().Replace("{\r\n\r\n", "{\r\n");
我缺少的東西?
是 - 你錯過了該字符串可以在括號「{」後,包含兩個以上的換行符 - 那就繼續刪除額外的換行符,直到只有一個仍然存在。 – Marwie
我不太喜歡那個代碼,因爲它很難理解。當然,它可能會更快一些,但爲什麼不使用String.Contains(「{\ r \ n」)?我不知道這段代碼的使用情況以及輸入的時間長短,但通常情況下這並不會顯着降低程序的速度。 – jalgames
@ user2241553:你想實現與'String.Contains( 「{\ r \ n」)'究竟是什麼? –