2016-04-05 14 views
0

C#のテキストボックスからのユーザー入力があり、たとえば「Wol That's cool LOL」とCSVファイルの単語を含むCSVファイルの場合:ユーザー入力テキストとCSVファイルの比較C#

を笑う床に

ラウドROFLローリングアウト笑う

LOLはどのようにして、入力されたテキストは、ファイル内の任意のマッチを見つけるために、比較するのでしょうか?ファイルをどのようにロードすればよいですか?

+0

フィールドはどのようにcsvファイルで区切られていますか? –

答えて

0

あなたが行うことができます:それはやっている

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

  • スプリット入力した単語の配列に個別に比較されます。
  • ファイルを1行ずつ読み込みます(遅延読み込み)
  • 分割された配列内の単語がその行の単語と一致するかどうかを比較してください。

あなたはケースを無視して文字列の比較を実行したい場合は、あなたが行うことができます:

bool ifFound = File.ReadLines("yourCVSFilePath.csv") 
       .Any(line => 
         splitArray.Any(sa => 
            line.IndexOf(sa, StringComparison.CurrentCultureIgnoreCase) > -1)); 
+0

csvには通常複数のフィールドが含まれていますが、フィールドに対してチェックするだけではなく、 'line.Contains'で部分文字列検索を使用しています。したがって、値 'lollipop'は' LOL'とマッチします。 –

+0

Tim、複数のフィールド*(おそらくカンマで区切られています)*がありますが、これはテキストファイルのように見えますが、CSVのように見えますが、OPから各フィールドの比較が行われるように見えます。特定の分野だけではありません。 – Habib

+0

確かに、OPはすべてのフィールドをチェックしたいと思っていますが、完全一致でなければならないと仮定します。私のロリポップの例を見てください。 –

0

あなたがそれらをフィルタリングする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))) 
関連する問題