在C#中基于CSV文件中的映射搜索和替换文本文件的内容

时间:2012-07-21 20:02:28

标签: c# csv replace

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

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);
}

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

我尝试在Visual Studio中使用C#应用程序设置(创建XML配置文件),但我很难理解如何使其工作。这样做的最佳方法是什么,以便不必对值进行硬编码?

2 个答案:

答案 0 :(得分:0)

csv文件可以正常工作。

我将创建一个新的Object,我称之为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)

答案 1 :(得分:0)

我的建议是您使用Settings.cs代替CSV

使用它们非常简单,并且代码非常少

e.g. Properties.Settings.Default.Old1;

以下是演练http://msdn.microsoft.com/en-us/library/aa730869(v=vs.80).aspx

请参阅此示例,了解如何使用它http://www.codeproject.com/Articles/17659/How-To-Use-the-Settings-Class-in-C