2013-03-22 106 views
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 
+0

到底有多大这个文件? – Steve 2013-03-22 13:57:30

+0

如果在函数内部读取不包含'black ='的第一行之后返回的代码。您需要修改该语句的else部分。你也只是读2行。读取一行的方式,然后读取并检查另一行。如果您想检查整个文档,则需要循环查看整个文本,然后执行替换。 – 2013-03-22 15:18:48

回答

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() 

编辑:稍微更有效(更少的代码)版本与ReadAllText每克里斯蒂安绍尔的建议。

编辑2:如果我试图高效率,让优化一切。我认为一条线就够了。

如果你想保存到一个文件:

 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") 
+0

为什么不使用readalltext? ReadToEnd有没有优势? – 2013-03-22 15:15:12

+0

我试图尽可能地坚持OP代码。我用你的建议更新了我的答案。 ReadAllText使代码略短。 – George 2013-03-22 15:20:30

相关问题