C#のテキストボックスからのユーザー入力があり、たとえば「Wol That's cool LOL」とCSVファイルの単語を含むCSVファイルの場合:ユーザー入力テキストとCSVファイルの比較C#
を笑う床に
ラウドROFLローリングアウト笑う
LOLはどのようにして、入力されたテキストは、ファイル内の任意のマッチを見つけるために、比較するのでしょうか?ファイルをどのようにロードすればよいですか?
C#のテキストボックスからのユーザー入力があり、たとえば「Wol That's cool LOL」とCSVファイルの単語を含むCSVファイルの場合:ユーザー入力テキストとCSVファイルの比較C#
を笑う床に
ラウドROFLローリングアウト笑う
LOLはどのようにして、入力されたテキストは、ファイル内の任意のマッチを見つけるために、比較するのでしょうか?ファイルをどのようにロードすればよいですか?
あなたが行うことができます:それはやっている
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));
csvには通常複数のフィールドが含まれていますが、フィールドに対してチェックするだけではなく、 'line.Contains'で部分文字列検索を使用しています。したがって、値 'lollipop'は' LOL'とマッチします。 –
Tim、複数のフィールド*(おそらくカンマで区切られています)*がありますが、これはテキストファイルのように見えますが、CSVのように見えますが、OPから各フィールドの比較が行われるように見えます。特定の分野だけではありません。 – Habib
確かに、OPはすべてのフィールドをチェックしたいと思っていますが、完全一致でなければならないと仮定します。私のロリポップの例を見てください。 –
あなたがそれらをフィルタリングするcsvファイルとLINQからラインを読むためにFile.ReadLines
を使用することができます。
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(());
Intersect
... Any
アプローチは、この代替クエリの最適化バージョンです。
......
.Where(line => words.Any(word => line.Split(delimiter).Contains(word)))
フィールドはどのようにcsvファイルで区切られていますか? –