C# 将用户输入文本与CSV文件C进行比较#
如果我有来自c#中文本框的用户输入,并且有一个CSV文件,例如,用户输入为:“哇,这太酷了,LOL”和CSV文件: 哈哈大笑 罗夫笑着在地板上打滚 如何比较输入文本以查找文件中的匹配项?如何加载文件?您可以执行以下操作: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")
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中吗?而不是一个字?