我有一堆脚本,其中包含我需要更改为其他行的特定行。
例如我的主要看起来像这样:
string Path = @"C:\foo\bar\bin\";
string Conf = "foo.bar.conf.bat";
string OldValue = "rem set \"PARAM =% PARAM % -Foo:BAR = foo,bar = 123,fff = bbb,aaa\"";
string NewValue = "set \"PARAM =% PARAM % -Foo:BAR = foo,bar = 123,fff = bbb,aaa\"";
Console.WriteLine(FART(Path + Conf, OldValue, NewValue));
private static string FART(string PathToFile, string OldValue, string NewValue)
{
string file = File.ReadAllText(PathToFile);
OldValue = OldValue.Replace(@"\", "");
NewValue = NewValue.Replace(@"\", "");
file = file.Replace(OldValue, NewValue);
File.WriteAllText(PathToFile, file);
string output = PathToFile + " " + OldValue + " " + NewValue;
return output;
}
我需要取消注释的字符串在此文件中是唯一的。我的问题是文件被更改(我可以看到修改日期更改)但内容是相同的。
关于类似的问题,这种方法应该尽我所能。
答案 0 :(得分:0)
位于PathToFile
的文件没有OldValue
的任何出现。
格式化OldValue
和NewValue
的逻辑可能是错误的。
从这一行:
OldValue = OldValue.Replace(@"\", "");
我可以看到您要从OldValue
中删除反斜杠,但是您已定义OldValue
的方式:
string OldValue = "rem set \"PARAM =% PARAM % -Foo:BAR = foo,bar = 123,fff = bbb,aaa\"";
它没有任何反斜杠开头。
请注意,当您在C#中的字符串中使用\"
时,它实际上只会插入"
。 (当然,除非您在字符串前加上@
)。
如果你删除这两行,它应该有效:
OldValue = OldValue.Replace(@"\", "");
NewValue = NewValue.Replace(@"\", "");