读取文件,搜索文本并替换所有行

时间:2014-09-12 14:37:01

标签: vb.net visual-studio-2010 text replace

我有一个TXT文件,其中包含一些我要替换的值。例如:

"FirtsColor"        "176 174 145 255"
"SecondColor"       "204 204 145 255"
"ThirdColor"        "164 240 115 255"

使用我的代码,我可以替换文本并添加新值,但仍然使用旧值。

"FirtsColor"        "176 174 145 255"
"SecondColor"       "255 110 195 255"       "204 204 145 255"
"ThirdColor"        "164 240 115 255"
Private Sub Button1_Click() Handles Button1.Click
    If Not File = Nothing Then
        Dim filePath As String = File
        Dim reader As New IO.StreamReader(filePath)
        Dim contents As String = reader.ReadToEnd()
        reader.Close()
        contents = contents.Replace(Chr(34) & "SecondColor" & Chr(34), Chr(34) & "SecondColor" & Chr(34) & "        " & Chr(34) & "255 110 195 255" & Chr(34))
        Dim writer As New IO.StreamWriter(filePath)
        writer.WriteLine(contents)
        writer.Close()
    End If
End Sub

我想要什么?

  • 搜索整个文件中的文本(本例中为“SecondColor”)
  • 删除所有行(“SecondColor”“204 204 145 255”)
  • 使用新的RGBA值再次写入相同的单词(“SecondColor”“255 110 195 255”)

我目前的代码获得了什么?

  • 搜索整个文件中的文字(“SecondColor”)
  • 替换文字并添加新值(“SecondColor”“255 110 195 255”“204 204 145 255”)

1 个答案:

答案 0 :(得分:0)

这类4000行不是一个足够大的内存问题,因此您可以在内存中读取所有这些内容并执行循环来搜索数据,用所需的值替换整行并将其写回磁盘< / p>

Sub Main
    Dim lines = File.ReadAllLines("D:\temp\testcolor.txt")
    for x = 0 to lines.Count() - 1
        if lines(x).Trim().StartsWith(Chr(34) & "SecondColor" & Chr(34)) Then
            lines(x) = string.Format("{0,-20}{1}", _
                       Chr(34) & "SecondColor" & Chr(34), _
                       Chr(34) & "255.255.255.255" & Chr(34))
        End if
    Next
    File.WriteAllLines("D:\temp\testcolor.txt", lines)
End Sub

File.ReadLines将您的数据拆分为单独的行,因此很容易用输入替换整行