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

Vb.net 读取文件,搜索文本并替换所有行,vb.net,visual-studio-2010,text,replace,Vb.net,Visual Studio 2010,Text,Replace,我有一个TXT文件,其中包含一些要替换的值。例如: "FirtsColor" "176 174 145 255" "SecondColor" "204 204 145 255" "ThirdColor" "164 240 115 255" 我想要什么 搜索整个文件中的文本(本例中为“SecondColor”) 删除所有行(“SecondColor”204 145 255) 使用新的RGBA值(“SecondColor”255 110 195 255)再次

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

"FirtsColor" "176 174 145 255" "SecondColor" "204 204 145 255" "ThirdColor" "164 240 115 255" 我想要什么

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

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

    • 这类4000行的内存问题还不够大,因此您可以在内存中读取所有行,然后执行循环来搜索数据,用指定的值替换整行并将其写回磁盘

      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
      

      将数据拆分为单独的行,这样就可以很容易地用输入替换整行了

      ,您的问题是什么?不清楚您在寻找什么。此文件中有多少行?@Steve超过4000行,但我只需要编辑一个9。添加了一点改进,以强制第一列(颜色列)中的文本宽度为20个字符
      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
      
      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