2013-02-26 67 views
2

即時嘗試複製行,直到檢測到空行,但此代碼滯後我的電腦我不知道什麼即時通訊做錯了這是因爲即時通訊運行while循環內另一個while循環?這裏是我的代碼:vb.net正則表達式與字符串比較

ElseIf String.Compare(line, "the") = 1 And Not line.ToLower().Contains("by") Then 
      While True 

       Dim title = New Regex("^\s*$").Matches(line).Count 
       If title = 1 Then Exit While 

       builder.AppendLine(line) 
       builder.AppendLine(reader.ReadLine()) 

      End While 
+1

你也許可以使用'String.IsNullOrEmpty()'或'String.IsNullOrWhiteSpace()'方法,而不是正則表達式。就像Chris在他的編輯中提到的一樣。 – Jonathan 2013-02-26 14:24:13

回答

3

你沒有重置line變量。像這樣的東西或許應該工作:

While True 
    Dim title = New Regex("^\s*$").Matches(line).Count 
    If title = 1 Then Exit While 
    builder.AppendLine(line) 
    line = reader.ReadLine() 
End While 

編輯

代替正則表達式的,你可以,而不是僅僅使用String.IsNullOrWhiteSpace()這可能使你的代碼更容易在未來的閱讀。

+0

非常感謝! :) – user2107624 2013-02-26 14:29:56

2

用這段簡短的代碼很難確切地告訴你要做什麼,但是它不起作用的原因很明顯。如果title不等於1,您將陷入無限循環。我認爲,您認爲line的值將在While循環內調用reader.ReadLine的時間發生變化。你可能打算做這樣的事情:

line = reader.ReadLine() 
builder.AppendLine(line)