zoukankan      html  css  js  c++  java
  • C# indexof和indexofany区别(转)

    定位子串是指在一个字符串中寻找其中包含的子串或者某个字符。在String类中,常用的定位子串和字符的方法包括IndexOf/LastIndexOf及IndexOfAny/LastIndexOfAny,下面进行详细介绍。

    1.IndexOf/LastIndexOf

    IndexOf方法用于搜索在一个字符串中,某个特定的字符或者子串第一次出现的位置,该方法区分大小写,并从字符串的首字符开始以0计数。如果字符串中不包含这个字符或子串,则返回-1。常用的重载形式如下所示。

    (1)定位字符:

    int IndexOf(char value)

    int IndexOf(char value, int startIndex)

    int IndexOf(char value, int startIndex, int count)

    (2)定位子串:

    int IndexOf(string value)

    int IndexOf(string value, int startIndex)

    int IndexOf(string value, int startIndex, int count)

    在上述重载形式中,其参数含义如下:

    value:待定位的字符或者子串。

    startIndex:在总串中开始搜索的其实位置。

    count:在总串中从起始位置开始搜索的字符数。

    下面的代码在“Hello”中寻找字符‘l’第一次出现的位置。

    代码4-7 使用IndexOf寻找字符第一次出现位置:Default.aspx.cs

    1.      String s=”Hello”;

    2.      int I = s.IndexOf(‘l’));               //2

    同IndexOf类似,LastIndexOf用于搜索在一个字符串中,某个特定的字符或者子串最后一次出现的位置,其方法定义和返回值都与IndexOf相同,不再赘述。

    2.IndexOfAny/LastIndexOfAny

    IndexOfAny方法功能同IndexOf类似,区别在于,它可以搜索在一个字符串中,出现在一个字符数组中的任意字符第一次出现的位置。同样,该方法区分大小写,并从字符串的首字符开始以0计数。如果字符串中不包含这个字符或子串,则返回-1。常用的IndexOfAny重载形式有3种:

    (1)int IndexOfAny(char[]anyOf)

    (2)int IndexOfAny(char[]anyOf, int startIndex)

    (3)int IndexOfAny(char[]anyOf, int startIndex, int count)

    在上述重载形式中,其参数含义如下:

    (1)anyOf:待定位的字符数组,方法将返回这个数组中任意一个字符第一次出现的位置。

    (2)startIndex:在原字符串中开始搜索的起始位置。

    (3)count:在原字符串中从起始位置开始搜索的字符数。

    下例在“Hello”中寻找字符‘l’第一次和最后一次出现的位置。

    代码4-8 使用IndexOfAny寻找子串第一次和最后一次出现位置:Default.aspx.cs

    1.      String s = “Hello”;

    2.      char[] anyOf={'H','e','l'};

    3.      int i1 = s.IndexOfAny(anyOf));                          //0

    4.      int i2 = s.LastIndexOfAny(anyOf));                   //3

    同IndexOfAny类似,LastIndexOfAny用于搜索在一个字符串中,出现在一个字符数组中任意字符最后一次出现的位置。

     

    ------------------------------------------------------------------------------

                string str = "liminandlxf";

                //str0个字符起,查找8个字符,

               //查找“and”在字符串STR中的位置[从第一个字符算起]注意:start+end不能大于str的长度

               //即在str中从第0个字符开始取8个字符得到liminand,然后在这个里面查找and的开始位置

                int Pos = str.IndexOf("and", 0,8);  //返回5

                Pos = str.IndexOf("and", 0, 7);     //返回-1

           MessageBox.Show(Pos.ToString());

    --------------------------------------------------------------------------------

       string str = "liminandlxf";
                char[] anyof = { 'l', 'a', 'f' };
                //查找anyof字符数组中的任意字符在str中第一次出现的位置
                int pos = str.IndexOfAny(anyof);      //返回0,第一个出现的是l
                MessageBox.Show(pos.ToString());
                int pos2 = str.LastIndexOfAny(anyof); //返回10,查找在anyof字符数组中的任意字符
                                                                                  //在字符串str中最后出现的位置
                MessageBox.Show(pos2.ToString());

  • 相关阅读:
    LINUX VNC配置[转]
    win7下,两台笔记本内置的无线局域网卡共享上网
    修改Linux和aix系统为北京时区
    ubuntu 9.10 下安装ORACLE 出错SP20750: You may need to set ORACLE_HOME to your Oracle software directory
    安装vim7.1
    select 语句的处理顺序
    批量从数据库是提取数据,并显示出来。
    输入四个字符串然后按大到后输出。
    shell 批量修改指定的文件。
    unix自动登录Telnet,实现查看多台服务器硬盘及数据表空间使用情况
  • 原文地址:https://www.cnblogs.com/a-mumu/p/4740172.html
Copyright © 2011-2022 走看看