【问题标题】:C# How to implement CSV file into this codeC#如何在这段代码中实现CSV文件
【发布时间】:2019-04-05 21:00:31
【问题描述】:

您好,我对编码很陌生,我有一段代码可以搜索一个字符串并将其替换为另一个字符串,如下所示:

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、Laugh Out Loud 和 ROFL、Roll Around Floor Laughing。我将如何实现它?

【问题讨论】:

  • 为什么是 CSV 格式?
  • 如果您阅读它们并拥有旧的,新的 这将是一个小问题,我相信您可以为自己解决一些问题
  • 使用值对,我会使用字典,本质上是一个键值对,这就是你所拥有的
  • 你得到了所有这些随机的建议,因为你问的问题太多了;你是新手,你想搜索字符串,你想替换字符串,你想读取 CSV 文件。一步一步地工作。如果您对某一步骤有疑问,请具体询问该步骤。
  • 如果你要使用“很多词”,使用StringBuilder.Replace 会比使用string.Replace 获得更好的性能等。如果您可以保证您的所有字段都没有嵌入逗号,那么您可以阅读这些行并使用string.Split 来拆分内容。使用“制表符分隔”文件而不是逗号分隔文件(嵌入制表符的可能性非常低)(或管道分隔 (|) 或其他永远不会使用的文件)可能会更开心跨度>

标签: c# arrays csv replace find


【解决方案1】:

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

123|Word One
ABC|Word Two
999|Word Three
LOL|Laugh Out Loud
ROFL|Roll Around Floor Laughing

然后创建一个小助手类:

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

结果是:

Laugh Out Loud, Word One is a long Word Three string yeah, Roll Around Floor Laughing

【讨论】:

  • 非常感谢 :) 我会试一试并将其调整到我的代码中。
  • @GZoid。糟糕,我忘记了一些代码(WordReplace 助手类)。看看我的更新。如果这对您有用,请不要忘记接受它。
  • Flydog57,谢谢。您的代码确实帮助我指出了正确的方向。有了一些线索,我能够得到我需要的东西。像您这样乐于助人的人创建了这个网站 :) 我花时间去理解它并分解它。再次感谢。
  • @GZoid:感谢您的“感谢”以及对“像您这样的乐于助人的人制作这个网站”的认可。但这不是这个网站的工作方式。要“制作此网站”,您需要接受或投票赞成对您有帮助的答案
猜你喜欢
  • 1970-01-01
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
  • 2017-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
相关资源
最近更新 更多