我发现这段代码替换了文本文件中的字符串。但是,我试图让它替换文本文件中的几个字符串。
My.Computer.FileSystem.WriteAllText("C:\windows\PrinterList2.txt", My.Computer.FileSystem.ReadAllText("C:\windows\PrinterList.txt").Replace("IT", "ADM-IT"), False)
例如,我需要它来代替" IT"与" ADM-IT"和" AR"使用" ADM-AR"可能还有一百多个。
如何让它循环来完成所有操作?一遍又一遍地运行这行代码只会用最后一项替换文件。
提前致谢。
答案 0 :(得分:0)
Replace
会返回String
,因此您最终可以根据需要添加更多Replace
次来电。
答案 1 :(得分:0)
查看MSDN中的Legacy String.Replace(...)签名,您似乎可以指定要替换的子字符串的出现次数。
您还需要记住的是,替换(..)函数将返回string
,您可以继续替换它,直到完成为止。
如果你需要将所有“X”替换为“Y”,那么在下面的for loop
中添加另一个循环来调用Replace(x, y)
,直到当前替换的字符串与前一个匹配(这可能是天真的而且效率不高。)
这是一些伪代码(不像VB那样太多了:():
// Build a look-up-table of junk to replace
replace = [["IT","ADM-IT"], ["AR","ADM-AR"], [...]];
string s = ReadAllText("path/to/file");
string previouS = s;
for pair in replace:
s = s.Replace(pair[0], pair[1]);
while(previous != s)
{
previous = s;
s = s.Replace(pair[0], pair[1]);
};
// Write file back to disk
WriteAllText("path/to/file", s);
答案 2 :(得分:0)
如果您只需要替换两个字符串,那么您可以使用以下内容:
Imports System.IO
File.WriteAllText("C:\windows\PrinterList2.txt",
File.ReadAllText("C:\windows\PrinterList.txt").
Replace("IT", "ADM-IT").
Replace("AR", "ADM_AR"), False)
如果不仅仅是少数,这将不会非常有效。这种方法的另一个问题是 IT和AR的每一次出现都将被替换,即使它们碰巧正在使用另一个词。例如,单词“STAR”将变为“STADM_AR”,因此请考虑这是否会成为您的问题。