2014-09-12 2 views
0

У меня есть 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")
+0

И в чем вопрос? – okrumnow

+0

Очень неясно, что вы ищете. – doge

+0

Сколько строк у вас есть в этом файле? – Steve

ответ

0

Ну, 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 

File.ReadLines разделить ваши данные в отдельных строках, так что легко заменить всю линию вашими входами

+0

Добавлено небольшое улучшение, чтобы текст в первом столбце (цветной колонке) был шириной 20 символов – Steve

Смежные вопросы