Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.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#如何将CSV文件实现到该代码中_C#_Arrays_Csv_Replace_Find - Fatal编程技术网

C#如何将CSV文件实现到该代码中

C#如何将CSV文件实现到该代码中,c#,arrays,csv,replace,find,C#,Arrays,Csv,Replace,Find,您好,我对编码相当陌生,我有一段代码可以搜索一个字符串并用另一个字符串替换它,如下所示: var replacements = new[]{ new{Find="123",Replace="Word one"}, new{Find="ABC",Replace="Word two"}, new{Find="999",Replace="Word two"}, }; var myLongString = "123 is a long 999 string yeah"; forea

您好,我对编码相当陌生,我有一段代码可以搜索一个字符串并用另一个字符串替换它,如下所示:

var replacements = new[]{
   new{Find="123",Replace="Word one"},
   new{Find="ABC",Replace="Word two"},
   new{Find="999",Replace="Word two"},
};

var myLongString = "123 is a long 999 string yeah";

foreach(var set in replacements)
{
   myLongString = myLongString.Replace(set.Find, set.Replace);
}

如果我想使用一个CSV文件,其中包含大量的单词及其替换,例如,LOL,大笑,ROFL,在地板上翻滚大笑。我将如何实现它?

创建一个文本文件,它看起来像(可以使用逗号,但我喜欢管道(
):

然后创建一个小助手类:

public class WordReplace
{
    public string Find { get; set; }
    public string Replace { get; set; }
}
最后,调用以下代码:

private static string  DoWordReplace()
{
    //first read in the data
    var fileData = File.ReadAllLines("WordReplace.txt");
    var wordReplacePairs = new List<WordReplace>();
    var lineNo = 1;
    foreach (var item in fileData)
    {
        var pair = item.Split(new[] {'|'}, StringSplitOptions.RemoveEmptyEntries);
        if (pair.Length != 2)
        {
            throw new ApplicationException($"Malformed file, line {lineNo}, data = [{item}] ");
        }
        wordReplacePairs.Add(new WordReplace{Find = pair[0], Replace = pair[1]});
        ++lineNo;
    }

    var longString = "LOL, 123 is a long 999 string yeah, ROFL";

    //now do the replacements
    var buffer = new StringBuilder(longString);
    foreach (var pair in wordReplacePairs)
    {
        buffer.Replace(pair.Find, pair.Replace);
    }

    return buffer.ToString();
}

为什么是CSV格式?如果你读它们,有旧的,有新的,那将是一个小问题,我相信你可以用这样的值对为自己解决一些问题。我会使用字典,基本上是一个键值对,这就是你所拥有的。你会得到所有这些随机的建议,因为你问的问题太多了;您是新手,您想要搜索字符串,您想要替换字符串,您想要读取CSV文件。一次只做一步。如果您对某个步骤有问题,请具体询问该步骤。如果您打算使用“很多单词”,则使用
StringBuilder.Replace
比使用
string.Replace
会获得更好的性能等。如果你能保证你的字段中没有嵌入逗号,那么你只需读入这些行,然后使用
string.Split
进行拆分。使用“制表符分隔”文件可能比使用逗号分隔的文件(嵌入制表符的可能性很低)(或管道分隔(
|
)或其他永远不会使用的文件)更开心。非常感谢:)我将尝试一下,并将其改编为我的代码。@gzod。哎呀,我忘了一点代码(WordReplacehelper类)。看看我的更新。如果这对你有用,别忘了接受它。你的代码真的帮我找到了正确的方向。有了一些线索,我就能够得到我所需要的。是像你这样乐于助人的人创建了这个网站:)我花时间去理解它并将其分解。再次感谢。
private static string  DoWordReplace()
{
    //first read in the data
    var fileData = File.ReadAllLines("WordReplace.txt");
    var wordReplacePairs = new List<WordReplace>();
    var lineNo = 1;
    foreach (var item in fileData)
    {
        var pair = item.Split(new[] {'|'}, StringSplitOptions.RemoveEmptyEntries);
        if (pair.Length != 2)
        {
            throw new ApplicationException($"Malformed file, line {lineNo}, data = [{item}] ");
        }
        wordReplacePairs.Add(new WordReplace{Find = pair[0], Replace = pair[1]});
        ++lineNo;
    }

    var longString = "LOL, 123 is a long 999 string yeah, ROFL";

    //now do the replacements
    var buffer = new StringBuilder(longString);
    foreach (var pair in wordReplacePairs)
    {
        buffer.Replace(pair.Find, pair.Replace);
    }

    return buffer.ToString();
}
Laugh Out Loud, Word One is a long Word Three string yeah, Roll Around Floor Laughing