我有一個排序的StringList,想用的binarySearch更換C# - 二分查找的StringList通配符
foreach (string line3 in CardBase.cardList)
if (line3.ToLower().IndexOf((cardName + Config.EditionShortToLong(edition)).ToLower()) >= 0)
{
return true;
}
,因爲cardList IST相當大的(〜18K)和本次搜索佔據了大約80%的時間。
所以我找到了List.BinarySearch-了Methode,但我的問題是,在cardList的線條看起來像這樣:
Brindle_Boar_(Magic_2012).c1p247924.prod
但是我沒有辦法生成C1P ......,這是導致List.BinarySearch只能找到完全匹配的問題。
如何修改List.BinarySearch,以便在只匹配部分字符串時找到匹配項?
e。 G。 搜索Brindle_Boar_(Magic_2012)應返回Brindle_Boar_(Magic_2012)的位置.c1p247924.prod
謝謝,這完美的作品。 –
這對於StartsWith搜索大字符串(或甚至數據,如果您在某些類上實現IComparable)集合絕對完美。只要做'var from = list.BinarySearch(str); var to = list.BinarySearch(str + char.MaxValue);'然後如果index小於零,則應用'〜'(並且爲'to'索引減1)。不知道'BinarySearch'這樣酷炫的功能。 – steavy