C# 将用户输入文本与CSV文件C进行比较#

C# 将用户输入文本与CSV文件C进行比较#,c#,file,csv,text,compare,C#,File,Csv,Text,Compare,如果我有来自c#中文本框的用户输入,并且有一个CSV文件,例如,用户输入为:“哇,这太酷了,LOL”和CSV文件: 哈哈大笑 罗夫笑着在地板上打滚 如何比较输入文本以查找文件中的匹配项?如何加载文件?您可以执行以下操作: string input = "Wow that's cool LOL"; string[] splitArray = input.Split(); bool ifFound = File.ReadLines("yourCVSFilePath.csv")

如果我有来自c#中文本框的用户输入,并且有一个CSV文件,例如,用户输入为:“哇,这太酷了,LOL”和CSV文件:

哈哈大笑

罗夫笑着在地板上打滚

如何比较输入文本以查找文件中的匹配项?如何加载文件?

您可以执行以下操作:

string input = "Wow that's cool LOL";
string[] splitArray = input.Split();
bool ifFound = File.ReadLines("yourCVSFilePath.csv")
                .Any(line => splitArray.Any(line.Contains));
bool ifFound = File.ReadLines("yourCVSFilePath.csv")
                .Any(line => 
                        splitArray.Any(sa => 
                                    line.IndexOf(sa, StringComparison.CurrentCultureIgnoreCase) > -1));
它正在做:

  • 将输入拆分为一个要单独比较的单词数组
  • 逐行加载文件(延迟加载)
  • 比较以查看拆分数组中的任何单词是否与行中的任何单词匹配
如果要执行忽略大小写的字符串比较,则可以执行以下操作:

string input = "Wow that's cool LOL";
string[] splitArray = input.Split();
bool ifFound = File.ReadLines("yourCVSFilePath.csv")
                .Any(line => splitArray.Any(line.Contains));
bool ifFound = File.ReadLines("yourCVSFilePath.csv")
                .Any(line => 
                        splitArray.Any(sa => 
                                    line.IndexOf(sa, StringComparison.CurrentCultureIgnoreCase) > -1));

您可以使用
File.ReadLines
从csv文件中读取行,并使用LINQ过滤行:

string input = "Wow that's cool LOL";
string[] words = input.Split();

char delimiter = '\t';  // for example
IEnumerable<string> matchingLines = File.ReadLines("yourCVSFilePath.csv")
    .Where(line => words.Intersect(line.Split(delimiter)).Any())
    .ToList(());

csv文件中的字段是如何分隔的?csv通常包含多个字段,您使用带有
line.contains的子字符串搜索,而不是仅检查字段。因此,一个值
lollipop
也会与
LOL
匹配。Tim,这更像是一个文本文件,然后是一个CSV,虽然有多个字段(可能用逗号分隔),但从问题来看,OP似乎要对每个字段进行比较,而不仅仅是一个特定字段。当然,但OP似乎想检查所有字段,但我认为应该是完全匹配,而不是部分匹配。看看我的例子棒棒糖。你是说输入中的每个单词都应该存在于CSV中吗?而不是一个字?