You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在文本文件中批量替换多个字符串?现有代码存在覆盖问题

解决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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:45:47