码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-05-23 11:50:40      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:class   blog   c   code   tar   a   

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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的效率高很多。

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

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

标签:class   blog   c   code   tar   a   

原文地址:http://www.cnblogs.com/Byrd/p/3737261.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!