0

特定の文字列「black=」を含む行をファイルでスキャンしたいのですが、一致するものがある場合は「blah blah」に置き換えますが、その方法がわかりません。これが私が試したものですが、機能しません。

Dim myStreamReaderL1 As System.IO.StreamReader
myStreamReaderL1 = System.IO.File.OpenText("C:\File.txt")
myStreamReaderL1.ReadLine()
If myStreamReaderL1.ReadLine.Contains("black=") Then
    Button2.Hide()
Else
    Return
End If
4

1 に答える 1

3

入力ファイルが巨大ではないと仮定すると、ファイル全体を文字列に読み込んで、のすべてのインスタンスをblack=に変更できます。blah blah

        Dim myStreamReaderL1 As System.IO.StreamReader
        Dim myStream As System.IO.StreamWriter

        Dim myStr As String
        myStreamReaderL1 = System.IO.File.OpenText("C:\File.txt")
        myStr = myStreamReaderL1.ReadToEnd()
        myStreamReaderL1.Close()


        myStr = myStr.Replace("black=", "blah blah")
        'Save myStr
        myStream = System.IO.File.CreateText("C:\FileOut.txt")
        myStream.WriteLine(myStr)
        myStream.Close()

編集:Christian Sauerの提案に従って、ReadAllTextを使用した少し効率的な(コードが少ない)バージョン。

EDIT2:効率的にしようとしているなら、すべてを最適化しましょう。一行で十分だと思います。

ファイルに保存する場合:

        System.IO.File.WriteAllText("C:\FileOut.txt", System.IO.File.ReadAllText("C:\File.txt").Replace("black=", "blah blah"))

後で使用するために単に文字列に保存したい場合:

        Dim myStr As String = System.IO.File.ReadAllText("C:\File.txt").Replace("black=", "blah blah")
于 2013-03-22T15:11:33.773 に答える