是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

回到顶部