繁体   English   中英

检查字符串是否为子字符串C#的最快方法?

[英]Fastest way to check if a string is a substring C#?

我需要检查项目列表是否包含字符串...这样的列表就像在用户在搜索框中键入内容时被过滤一样。 因此,在发生文本更改事件时,我正在检查输入的文本是否包含在listox项之一中并过滤掉……类似:

value.Contains(enteredText)

我想知道这是否是筛选列表框项目的最快,最有效的方法?

Contains()方法是在C#中搜索子字符串的最佳方法吗?

我要说的是,在非常例外的情况下,它足够快且有效,即使在这样的例外情况下,它也可能纯粹是学术问题。 如果您使用它,并在与此相关的逻辑中遇到任何瓶颈,那么我会感到惊讶,但是只有到那时它才值得一看,然后您可能会在其他地方寻找。

Contains是我的代码完成过滤算法中最便宜的方法之一(第6部分#6,其中脚注中描述的#7和模糊逻辑匹配要昂贵得多),即使快速键入也没有问题用户和下拉菜单中的数千个项目。

我非常怀疑这会给您带来麻烦。

尽管这不是全局上最快的选项,但它是不需要编写任何代码的最快的选项。 它足以过滤下拉项。

对于较长的文本,您可能需要使用KMP算法 ,该算法具有线性时序复杂度。 但是请注意,对于非常短的搜索字符串而言,它不会有任何区别。

对于具有大量匹配项的搜索(例如,您从第一个到第二个字符获得的匹配项),您可能需要预先计算一个表,该表将单个字母和字母对映射到下拉列表中的行,以更快地查找-以使用更多内存为代价(通常是编程中相当标准的折衷)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM