我不知道如何從以下開始。 一方面,我有一個包含一百個名字的文本文件 另一方面,我在包含字符串的數據表中有一列。 我嘗試在每個這些字符串中找到文本文件中包含的名稱之一。 我想我將不得不用我的文本文件的內容填充數組,然後在搜索字符串時遍歷數組?在字符串中找到一個數組中的字符串
如何開始這一個任何想法,將不勝感激。 乾杯
我不知道如何從以下開始。 一方面,我有一個包含一百個名字的文本文件 另一方面,我在包含字符串的數據表中有一列。 我嘗試在每個這些字符串中找到文本文件中包含的名稱之一。 我想我將不得不用我的文本文件的內容填充數組,然後在搜索字符串時遍歷數組?在字符串中找到一個數組中的字符串
如何開始這一個任何想法,將不勝感激。 乾杯
填充從文本文件中的字符串到一個集合(如列表或字典
然後通弦迭代從數據表列,只是檢查字符串集合中。
if (nameCollection.Contains(namestring)) return true;
原來的海報說「要找**這些字符串中的每一個」,所以不用'nameCollection.Contains(namestring)',可能需要使用'nameCollection.Any(namestring.Contains)' – 2012-03-01 08:41:13
你也可以使用正則表達式類是這樣的:
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);
}
}
您可以先添加的所有名稱到列表中,然後,加在另一個列表特定列中的所有行,然後檢查字符串是否包含名稱或不....我寫下代碼爲您的方案:
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包含有文本文件的名稱的所有字符串。
商店的話在文件中爲數據結構,使得查找容易的字符串。我們可以使用Trie,因爲它使用了很多共享結構。例如:如果我們有一個字符串「ANIMAL」和「ANIMATE」,則兩個字符串共享「ANIMA」。這種數據可以存儲在一個trie中(共享減少內存)。
搜索算法: - 對於數據庫中的每個單詞,按照Order of(單詞的長度)查找trie中的單詞。
你爲什麼不嘗試自己編寫代碼並在這裏詢問有關問題? – wRAR 2012-03-01 08:35:18
@wRAR:只是因爲我不知道如何開始並想獲得一些建議 – 2012-03-01 08:48:25
然後從C#書開始。 – wRAR 2012-03-01 09:38:00