如何在文本文件中批量替换多个字符串?现有代码存在覆盖问题
解决C#多字符串替换时修改被覆盖的问题
哦,我明白你遇到的问题了!你现在的代码逻辑有个小问题——每次替换都是基于原始文本来操作的,而且最后循环写入文件还会把之前的结果覆盖掉,所以看起来每次替换后上一次的修改又恢复了。
问题出在哪?
你的代码里,每次Text.Replace(...)都是从最初读取的Text变量生成新字符串,这些字符串彼此独立,没有继承之前的修改。然后你把这些独立的字符串加到列表里,循环写入同一个文件,后面的写入操作会直接覆盖前面的内容,最后只有最后一次替换的结果被保留下来。
正确的实现方式
你需要在同一个字符串变量上逐步累积替换,而不是每次都从原始文本重新生成。完成所有替换后,只需要写入文件一次就可以了。
示例代码:
// 读取原始文本到变量 string modifiedText = File.ReadAllText(temp); // 依次在已有修改的基础上继续替换 modifiedText = modifiedText.Replace("name", name); modifiedText = modifiedText.Replace("name2", name2); modifiedText = modifiedText.Replace("1.0000", CR); modifiedText = modifiedText.Replace("0.6590", CG); modifiedText = modifiedText.Replace("0.0000", CB); // 一次性写入最终修改后的文本 File.WriteAllText(path, modifiedText);
如果你喜欢更简洁的链式写法,也可以这样:
string modifiedText = File.ReadAllText(temp) .Replace("name", name) .Replace("name2", name2) .Replace("1.0000", CR) .Replace("0.6590", CG) .Replace("0.0000", CB); File.WriteAllText(path, modifiedText);
这样所有的替换操作都会基于上一次的修改结果进行,最终得到的是所有替换都生效后的文本,写入一次文件就完成了需求。
内容的提问来源于stack exchange,提问作者Jacce
相关产品推荐
相关产品推荐

