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

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

时间: 2024-07-29 16:21:14

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

js查询字符串是否包含指定字符的函数indexOf

今天用到了js的函数indexOf来查看字符串中是否包含指定的字符,最开始没注意看,就拿来用了,结果用的时候才发现,IndexOf的返回值原来是字符在字符串中的index,返回值有0.1等等,如果没有的话会返回-1,我看网上好多人都str.indexOf(c)>0,这显然是不对的啊,应该是str.indexOf(c)>-1啊,自己也被误导了下,虽说没什么大碍,但是这也是个警告啊,代码不能直接copy后就拿来用啊,一定要仔细的看一下

如何获取浏览器URL中查询字符串中的参数?

例:http://www.runoob.com/jquery/misc-trim.html?channelid=12333&name=xiaoming&age=23 $(function(){    var obj={};    function getParams(){     var href=window.location.href;//获取网址http://www.runoob.com/jquery/misc-trim.html?channelid=12333&name=x

SQL中判断字符串中包含字符的方法

通过2个函数CHARINDEX和PATINDEX以及通配符的灵活使用函数:CHARINDEX和PATINDEXCHARINDEX:查某字符(串)是否包含在其他字符串中,返回字符串中指定表达式的起始位置.PATINDEX:查某字符(串)是否包含在其他字符串中,返回指定表达式中某模式第一次出现的起始位置:如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零.特殊:可以使用通配符! 例子:1. 查询字符串中是否包含非数字字符SELECT PATINDEX('%[^0-9]%', '1235X4

查询字符串中字母的个数(两种实现方式1,list与set集合 2,map集合)

题目: 取出一个字符串中字母出现的次数.如:字符串:"abcde%^kka27qoq" ,输出格式为:a(2)b(1)k(2)... 第一种方式(set和list结合使用): package itheima; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; /** * .取出一个字符串中字母出现的次数.如:字符串:"

如何用js获取浏览器URL中查询字符串的参数

首先要知道Location这个对象以及这个对象中的一些属性: href:设置或返回完整的url.如本博客首页返回http://www.cnblogs.com/wymninja/ host:设置或返回主机名和当前的URL的端口号.本博客首页返回www.cnblogs.com hostname:设置或返回当前URL的主机名.本博客首页返回www.cnblogs.com hash:设置或返回从井号(#)开始的URL(锚).本博客首页返回 空 pathname:设置或返回当前URL的路径部分.本博客首页

HTTP-URL中查询字符串格式化

HTTP-URL中查询字符串格式化 GET请求是最常见的请求类型,常用语向服务器查询某些信息.必要时,需要将查询字符串追加到URL末尾.有的时候为了根据URL中查询字符串的不同渲染不同的页面也需要读取URL中的查询字符串.如何避免在URL写入查询字符串时报出格式错误 及 如何更快捷读出URL中查询字符串就是这篇博客要解决的问题. https://www.baidu.com/baidu?wd=%C6%E2%C7%E0%F1%C6+csdn&tn=monline_dg 在这个URL中 ? 后的字符串

MySQL 整型字段中查询字符串,返回了所有为0的结果

在MySQL中,在整型字段中查询字符串,返回了所有为0的结果,应该返回null或空. 例如表结构信息: CREATE TABLE `t` (   `name` char(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,   `id` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci 表中数据: mysql> select id from t

mvc中查询字符串请求过长

最近在mvc中做导出Excel功能,通过页面把字段id和对应的中文名称通过a标签传给控制器的过程中,总是报错. 1.第一次错误截图 具体解决方案: 可以配置 IIS 服务器以拒绝查询字符串长度大于指定值的请求.如果请求的查询字符串大于所配置的值,便会返回此错误.如果需要增加查询字符串的允许长度,请修改configuration/system.webServer/security/requestFiltering/[email protected] 设置. 即确认 applicationhost.

Python中去除字符串中空格的方法

Python中去除字符串中指定字符或者空格的方法有几种: str.strip() //该方法用于去除字符串开头和结尾的指定字符或字符串(默认为空格或换行符) str.lstrip() //该方法用于截掉字符串左边的空格或指定字符 str.rstrip() //该方法用于截掉字符串右边的空格或指定字符 所以若是要去除字符串中所有的空格可以使用如下方式: str.strip().lstrip.rstrip() 原文地址:https://www.cnblogs.com/EdenChanIy/p/993