C# 基于C中CSV文件中的映射搜索和替换文本文件的内容#
我是编程新手,正在从事一个C#项目,该项目将搜索文本文件中的某些单词并将其替换为新值。我有一些代码可以工作,但是新旧值现在都是硬编码的。我希望使用外部CSV文件作为配置文件,以便用户可以在以后添加或更新新旧映射。这是我的当前代码,带有硬编码的新旧值:C# 基于C中CSV文件中的映射搜索和替换文本文件的内容#,c#,csv,replace,C#,Csv,Replace,我是编程新手,正在从事一个C#项目,该项目将搜索文本文件中的某些单词并将其替换为新值。我有一些代码可以工作,但是新旧值现在都是硬编码的。我希望使用外部CSV文件作为配置文件,以便用户可以在以后添加或更新新旧映射。这是我的当前代码,带有硬编码的新旧值: try { StreamReader file = new StreamReader(inputfullfilepath); TextWriter writer = new StreamWriter(outputfile);
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,如果更容易的话?)配置文件使此新旧映射列表动态化,以便用户可以添加新的搜索/替换关键字
我曾尝试在VisualStudio中使用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);
}
(请注意,我的代码缺少一些检查,但您应该知道。您可能还需要使用StringBuilder)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);
}
(请注意,我的代码缺少一些检查,但您应该知道。您可能还想使用StringBuilder)我的建议是使用
设置.cs
而不是CSV
使用它们非常容易,所涉及的代码也非常少
e.g. Properties.Settings.Default.Old1;
这是一个演练
查看此示例,说明如何使用它我的建议是使用
Settings.cs
而不是CSV
使用它们非常容易,所涉及的代码也非常少
e.g. Properties.Settings.Default.Old1;
这是一个演练
请参见此示例,说明如何使用它