2012-03-01 33 views
0

以下から始める方法は正確にはわかりません。 一方の側では、百の名前を含むテキストファイルを持っています もう一方では、文字列を含むデータテーブルに列があります。 これらの文字列のそれぞれで、テキストファイルに含まれる名前の1つを見つけようとしています。 私は私のテキストファイルの内容で配列を埋める必要がありますし、文字列を検索中に配列を反復処理する必要がありますか?配列内の文字列を文字列で検索する

これをどのように開始するかに関するご意見をいただければ幸いです。 乾杯

+2

なぜあなた自身でコードを書いて問題を尋ねなかったのですか? – wRAR

+0

@wRAR:ちょうど私が始める方法を知らなかったし、アドバイスを得たいと思ったからです。 –

+1

その後、C#の本で始まります。 – wRAR

答えて

2

は、リストや辞書のような(コレクションにテキストファイルから文字列を読み込む

次にDataTableの列から文字列を通して反復処理し、単純に文字列がコレクション内にあるかどうかを確認:。

if (nameCollection.Contains(namestring)) return true; 
+0

オリジナルのポスターは、 "**これらの文字列のそれぞれを**見つけるために" 'nameCollection.Contains(namestring)'の代わりに 'nameCollection.Any(namestring.Contains)'を使う必要があるかもしれません。 –

0

ます。また、このような正規表現クラスの使用を作ることができる:

 string text = "a b c d e f"; 
     List<String> dbStrings = new List<string>(); 
     dbStrings.AddRange(new string[] { "a", "b", "c" }); 
     foreach (string dbString in dbStrings) { 
      string pattern = @"(?<=^|\s)" + dbString + @"(?=\s|$)"; 
      if (Regex.IsMatch(text, pattern)) { 
       Console.WriteLine(dbString); 
      } 
     } 
0

あなたが最初のリストにすべての名前を追加し、追加することができます

 List<string> listName = new List<string>(); 
     using (StreamReader reader = new StreamReader("C:\\file1.txt")) 
     { 
      string line; 
      while ((line = reader.ReadLine()) != null) 
      { 
       listName.Add(line); // Adding name in list 
      } 
     } 
     List<string> listRowsStr = new List<string>(); 
     List<string> listRowContainName = new List<string>(); 

     //Adding all rows of particular column in list 
     listRowsStr=(from name in dt.AsEnumerable() 
        select name.Field<string>("column_name")).ToList<string>(); 
     foreach (string name in listName) 
     { 
      foreach (string rowStr in listRowsStr) 
      { 
       if (rowStr.Contains(name)) 
       { 
        listRowContainName.Add(rowStr);//Adding the name containing string into the sepearte list i.e.listRowsStr 
       } 
      } 
     } 

listRowContainNameは、テキストファイルの名前を持つすべての文字列が含まれています。文字列は名前が含まれているかどうか、全て別のリスト内の特定の列の行と、その後は、私はあなたのシナリオのためのコードを書き留めてい....ご確認ください。

0

ファイル内の単語を、文字列の検索が容易なようなデータ構造に格納します。私たちは、多くの共有構造を使用するので、Trieを使用します。例: "ANIMAL"と "ANIMATE"という文字列がある場合、両方の文字列は "ANIMA"を共有します。この種のデータはトライで保存することができます(共有によってメモリが節約されます)。

検索アルゴリズム: - データベースのすべての単語について、単語の長さ(単語の長さ)でトライで検索します。

関連する問題