替换文件中的文本?

时间:2014-10-17 17:24:51

标签: vb.net

我正在成功替换文件中的文字。

Dim fileReader As String = My.Computer.FileSystem.ReadAllText("C:\test.txt").Replace("foo", "bar")
My.Computer.FileSystem.WriteAllText("C:\test.txt", fileReader, False)

但是,如果我不知道文本的中间部分,我该如何更换?例如

example_my(" browser.taskbar.lastgroupid"," E7CF176E110C211B");

如何更换 E7CF176E110C211B

1 个答案:

答案 0 :(得分:2)

一种方法是使用RegEx。您可以指定第一个和最后一个部分,然后使用\d+或更好[0-9A-F]+来匹配任何十六进制数字。因此,鉴于您不知道的部分是十六进制数,您可以使用以下代码:

Dim fileReader As String = My.Computer.FileSystem.ReadAllText("C:\test.txt")
fileReader = System.Text.RegularExpressions.RegEx.Replace(fileReader, "[0-9A-F]+", "bar")
My.Computer.FileSystem.WriteAllText("C:\test.txt", fileReader, False)

这将使用单词" bar"替换文件中的所有十六进制数字。

请注意,对于文本文件,此类全局替换可能会产生不良结果。例如,即使在正常文本中,上述正则表达式也将替换字母A到F.所以你可能想要提出一些限制,比如min。确保它仅替换有效十六进制数的位数。例如,您可能希望使用[0-9A-F]{4,},它将仅替换4个或更多连续的十六进制数字。但即使这样也不是100%安全;例如它将用" bar"替换DEAD,FACE,FADE,FACED等。要确切了解文件的100%安全性,您需要仔细检查其内容。

修改

阅读您的评论,您可以使用以下代码:

Dim fileReader As String = My.Computer.FileSystem.ReadAllText("C:\test.txt")
fileReader = System.Text.RegularExpressions.RegEx.Replace(fileReader , "lastgroupid"", ""(.+)""\)", "lastgroupid"", ""ANYTHING_YOU_WANT""\)")
My.Computer.FileSystem.WriteAllText("C:\test.txt", fileReader, False)

这将替换 lastgroupid"," AND ")之间所有十六进制数的出现,字符串为 ANYTHING_YOU_WANT