gpt4 book ai didi

c# - 带通配符的 BinarySearch StringList

转载 作者:行者123 更新时间:2023-11-30 22:36:41 27 4
gpt4 key购买 nike

我有一个排序的 StringList 并想替换

foreach (string line3 in CardBase.cardList)
if (line3.ToLower().IndexOf((cardName + Config.EditionShortToLong(edition)).ToLower()) >= 0)
{
return true;
}

使用 binarySearch,因为 cardList 相当大(~18k)并且此搜索占用了大约 80% 的时间。

所以我找到了 List.BinarySearch-Methode,但我的问题是 cardList 中的行看起来像这样:

Brindle_Boar_(Magic_2012).c1p247924.prod

但我无法生成 c1p... ,这是一个问题,因为 List.BinarySearch 只能找到完全匹配的结果。

如何修改 List.BinarySearch,使其在只有部分字符串匹配时找到匹配项?

G。搜索 Brindle_Boar_(Magic_2012) 应该返回 Brindle_Boar_(Magic_2012).c1p247924.prod 的位置

最佳答案

List.BinarySearch 如果未找到完全匹配项,将返回大于请求的下一项索引的补码。

因此,您可以这样做(假设您永远不会获得完全匹配):

var key = (cardName + Config.EditionShortToLong(edition)).ToLower();
var list = CardBase.cardList;

var index = ~list.BinarySearch(key);
return index != list.Count && list[index].StartsWith(key);

关于c# - 带通配符的 BinarySearch StringList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6876973/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com