什么算法.Net用于搜索字符串中的模式?
我现在正在研究字符串搜索算法,并想知道.NET String.Contains函数使用了什么算法。 Reflector显示使用了这个函数,但我不知道它的免费精选名字大全是什么意思。
private static extern int InternalFindNLSStringEx(IntPtr handle, string localeName, int flags, string source, int sourceCount, int startIndex, string target, int targetCount);
它只是通过文本和模式的嵌套循环实现的天真字符串搜索实现,具有O(n·m)运行时。
特别是,MSDN没有指定此方法的性能,因此假设更好的性能是不安全的。
此外,大多数高级模式搜索方法对于某些字符串类型非常专业,而且有更好的通用搜索算法,在String.IndexOf
实现一个是一些不必要的优化。
原因很简单:如果您需要有效的模式搜索,那么无论如何您都将实现自己的,自定义以适合您的特定数据。 所以没有必要在通用库中实现一些奇特的东西。
截至2016年(现在可以使用Core CLR源代码),实现仍然使用一个简单的嵌套循环。 这是在NewApis::IndexOfString
和NewApis::FastIndexOfString
,它们从托管的String.Contains
和String.IndexOf
函数调用(通过InternalFindNLSStringEx
)。
为什么在源代码可用时使用reflection器?
我找不到那个方法存根,但我最好的猜测是它针对不区分大小写的搜索进行局部特定的大小写折叠。
上述就是C#学习教程:什么算法.Net用于搜索字符串中的模式?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/959502.html