gpt4 book ai didi

c# - 在 C# 中根据 CSV 文件中的映射搜索和替换文本文件的内容

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:47 25 4
gpt4 key购买 nike

我是编程新手,正在开发一个 C# 项目,该项目将搜索文本文件中的某些单词并将其替换为新值。我有一些有效的代码,但 OLD 和 NEW 值现在是硬编码的。我想使用外部 CSV 文件作为配置文件,以便用户可以在以后添加或更新旧到新的映射。这是我当前的代码,其中硬编码了旧值和新值:

try
{
StreamReader file = new StreamReader(inputfullfilepath);
TextWriter writer = new StreamWriter(outputfile);

while ((line = file.ReadLine()) != null)
{
line = line.Replace("OLD1", "NEW1");
line = line.Replace("OLD2", "NEW2");
// etc....

writer.WriteLine(line);
}
file.Close();
File.Move(inputfullfilepath, inputfullfilepath + ".old");
writer.Close();
File.Move(outputfile, outputfilepath + @"\" + inputfilename);
MessageBox.Show("File Scrub Complete", "Success");
}
catch
{
MessageBox.Show("Error: Be sure data paths are valid.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}

代码获取文本文件的每一行,尝试搜索/替换所有旧到新的映射,然后转到文本文件中的下一行。我试图解决的问题是能够根据 CSV(或 XML,如果这样更容易些?)配置文件使旧到新映射的列表动态化,以便用户可以添加新的搜索/替换关键字。

我尝试在 Visual Studio 中使用 C# 应用程序设置(它创建一个 XML 配置文件),但我真的很难理解如何让它发挥作用。执行此操作的最佳方法是什么,以便不必对值进行硬编码?

最佳答案

csv 文件就可以正常工作。

我将创建一个名为 ReplaceObject 的新对象

public ReplaceObject()
{
public string original;
public string updated;

//ideally you'd use getters and setters, but I'll keep it simple
}

现在我们从 csv 中读取

List<ReplaceObject> replaceList = new List<ReplaceObject>

while (reader.peek != -1)
{
string line = reader.readln();

var splitLine = line.split(',');

ReplaceObject rObject = new ReplaceObject();

rObject.original = splitLine[0];
rObject.updated = splitLine[1];

replaceList.add(rObject);

}

现在我们遍历列表..并替换

string entireFile = //read all of it

foreach (ReplaceObject o in replaceList)
{
entireFile.Replace(o.original,o.updated);
}

//write it at the end

(请注意,我的代码缺少一些检查,但您应该明白了。您可能还想使用 StringBuilder)

关于c# - 在 C# 中根据 CSV 文件中的映射搜索和替换文本文件的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11595472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com