是String.Contains()比String.IndexOf()快吗?
我有大约2000个字符的字符串缓冲区,需要检查缓冲区是否包含特定的字符串。
将在每个Web请求的ASP.NET 2.0 Web应用程序中进行检查。
有人知道String.Contains方法是否比String.IndexOf方法执行得更好吗?
// 2000 characters in s1, search token in s2 string s1 = "Many characters. The quick brown fox jumps over the lazy dog";
string s2 = "fox";
bool b;
b = s1.Contains(s2);
int i;
i = s1.IndexOf(s2);
有趣的事实
回答:
Contains
电话IndexOf
:
public bool Contains(string value){
return (this.IndexOf(value, StringComparison.Ordinal) >= 0);
}
哪个调用CompareInfo.IndexOf
,最终使用CLR实现。
如果要查看如何在CLR中比较字符串,这将向您显示(查找 CaseInsensitiveCompHelper
)。
IndexOf(string)
没有选项,Contains()
而是使用序数比较(逐字节比较,而不是尝试执行智能比较,例如使用é与é)。
因此IndexOf
(从理论上来说)将稍微快一些IndexOf
,直接使用kernel32.dll中的FindNLSString进行字符串搜索(反射器的功能!)。
- 的IndexOf不再使用序号比较等都含有可以更快。 请参阅下面的评论。
以上是 是String.Contains()比String.IndexOf()快吗? 的全部内容, 来源链接: utcz.com/qa/424051.html