2012-03-01 153 views
0

我不知道如何从以下开始。 一方面,我有一个包含一百个名字的文本文件 另一方面,我在包含字符串的数据表中有一列。 我尝试在每个这些字符串中找到文本文件中包含的名称之一。 我想我将不得不用我的文本文件的内容填充数组,然后在搜索字符串时遍历数组?在字符串中找到一个数组中的字符串

如何开始这一个任何想法,将不胜感激。 干杯

+2

你为什么不尝试自己编写代码并在这里询问有关问题? – wRAR 2012-03-01 08:35:18

+0

@wRAR:只是因为我不知道如何开始并想获得一些建议 – 2012-03-01 08:48:25

+1

然后从C#书开始。 – wRAR 2012-03-01 09:38:00

回答

2

填充从文本文件中的字符串到一个集合(如列表或字典

然后通弦迭代从数据表列,只是检查字符串集合中。

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

原来的海报说“要找**这些字符串中的每一个”,所以不用'nameCollection.Contains(namestring)',可能需要使用'nameCollection.Any(namestring.Contains)' – 2012-03-01 08:41:13

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”。这种数据可以存储在一个trie中(共享减少内存)。

搜索算法: - 对于数据库中的每个单词,按照Order of(单词的长度)查找trie中的单词。

相关问题