您的位置:首页 > 编程语言 > C#

C#中查询字符串中是否包含指定字符/串,使用IndexOf还是Contains?

2014-05-19 17:26 661 查看
C#中查询字符串中是否包含指定字符/串,使用IndexOf还是Contains?这是一个很常见的命题,以前也没有注意,今天QQ群里有人提起,于是就做了下试验,代码如下:

using System;
using System.Diagnostics;

namespace ConsoleApplication1
{
class Program
{
private const int N = 10000000;
private static Stopwatch watch = new Stopwatch();
static void Main(string[] args)
{

string source = "abcdefghijklmnopqrstuvwxyz0123456789C#"
+ "中查询字符串中是否包含指定字符/串,使用IndexOf还是Contains?.uonun";
string target = "a";
Console.WriteLine("目标为第一个字符时:");
TestContains(source, target);
TestIndexOf(source, target);
Console.WriteLine();

Console.WriteLine("目标为中部某个字符时:");
target = "中";
TestContains(source, target);
TestIndexOf(source, target);
Console.WriteLine();

Console.WriteLine("目标为最后一个字符时:");
target = "u";
TestContains(source, target);
TestIndexOf(source, target);

Console.WriteLine("执行完毕,按任意键退出...");
Console.ReadKey();

}
private static void TestIndexOf(string source, string target)
{
watch.Reset();
watch.Start();
for (int i = 0;i < N;i++)
{
source.IndexOf(target);
}
watch.Stop();
Console.WriteLine("IndexOf: " + watch.ElapsedMilliseconds.ToString() + "ms");
return;
}

private static void TestContains(string source, string target)
{
watch.Reset();
watch.Start();
for (int i = 0;i < N;i++)
{
source.Contains(target);
}
watch.Stop();
Console.WriteLine("Contains: " + watch.ElapsedMilliseconds.ToString() + "ms");
return;
}
}
}


得到的结果是:

目标为第一个字符时:
Contains: 973ms
IndexOf: 1343ms

目标为中部某个字符时:
Contains: 1813ms
IndexOf: 8602ms

目标为最后一个字符时:
Contains: 1433ms
IndexOf: 5094ms
执行完毕,按任意键退出...

可以看出,使用Contains方法的效率比IndexOf的效率高很多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐