Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于C中CSV文件中的映射搜索和替换文本文件的内容#_C#_Csv_Replace - Fatal编程技术网

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

C# 基于C中CSV文件中的映射搜索和替换文本文件的内容#,c#,csv,replace,C#,Csv,Replace,我是编程新手,正在从事一个C#项目,该项目将搜索文本文件中的某些单词并将其替换为新值。我有一些代码可以工作,但是新旧值现在都是硬编码的。我希望使用外部CSV文件作为配置文件,以便用户可以在以后添加或更新新旧映射。这是我的当前代码,带有硬编码的新旧值: try { StreamReader file = new StreamReader(inputfullfilepath); TextWriter writer = new StreamWriter(outputfile);

我是编程新手,正在从事一个C#项目,该项目将搜索文本文件中的某些单词并将其替换为新值。我有一些代码可以工作,但是新旧值现在都是硬编码的。我希望使用外部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,如果更容易的话?)配置文件使此新旧映射列表动态化,以便用户可以添加新的搜索/替换关键字


我曾尝试在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;
这是一个演练

请参见此示例,说明如何使用它