2

空の行が検出されるまで行をコピーしようとしていますが、このコードはコンピューターに遅れをとっています。別のwhileループ内でwhileループを実行しているため、何が間違っているのかわかりません。ここに私のコードがあります:

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
4

2 に答える 2

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()に、将来コードを読みやすくするために使用できます。

于 2013-02-26T14:20:12.857 に答える
2

この短いコード スニペットでは、何をしようとしているのかを正確に伝えるのは困難ですが、それが機能しない理由は明らかです。titleが等しくない場合、無限ループに陥ります1。の値は、ループ内でline呼び出す到達時間に変化すると思います。あなたはおそらく次のようなことをするつもりでした:reader.ReadLineWhile

line = reader.ReadLine()
builder.AppendLine(line)
于 2013-02-26T14:21:40.297 に答える