我正在成功替换文件中的文字。
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 ?
答案 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 强>