定位子串是指在一个字符串中寻找其中包含的子串或者某个字符。在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";

//从str第0个字符起,查找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());

C# indexof和indexofany区别(转)的更多相关文章

  1. String中的Indexof,LastIndexOf, Indexofany,LastIndexOfAny 的区别

    本文转载自 http://www.cnblogs.com/qinying/archive/2008/09/22/1295730.html 定位子串是指在一个字符串中寻找其中包含的子串或者某个字符.在S ...

  2. IndexOf、IndexOfAny 、Remove

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. 几种String对象方法的区别

    1.在String对象方法中,发现.slice()方法和.substring()方法的作用几乎相同,都是根据起始索引返回截取得到的字符串.经过查阅资料和实测得到区别: 正常情况下索引都为正值,返回值为 ...

  4. includes与indexOf

    indexOf(a,b)是在es6之前常用的判断数组/字符串内元素是否存在的api,接收两个参数,第一个a代表要被查找的元素,必填.第二个代表从数组的某个坐标开始查找,可选 在数组中 通过indexO ...

  5. C#分割字符串

    命名空间:System.String.Split 程序集:mscorlib( mscorlib.dll) 简单实例: string before = "12,50,30"; str ...

  6. string应用

    今天在网上搜了一些资料. C# string类应用 判断是否包含子串 想要判断一个字符串中是否包含某个子串,可以用Contains方法来实现: ? public bool Contains (stri ...

  7. C# String字符串

    C#(静态String类) C#中提供了比较全面的字符串处理方法,很多函数都进行了封装为我们的编程工作提供了很大的便利.System.String是最常用的字符串操作类,可以帮助开发者完成绝大部分的字 ...

  8. C#编程(四十四)----------string和stringbuilder

    System.String类 首先string类是静态的,System.String是最常用的字符串操作类,可以帮助开发者完成绝大部分的字符串操作功能,使用方便. 1.比较字符串 比较字符串是指按照字 ...

  9. Hadoop开发相关问题

    总结自己在Hadoop开发中遇到的问题,主要在mapreduce代码执行方面.大部分来自日常代码执行错误的解决方法,还有一些是对Java.Hadoop剖析.对于问题,通过查询stackoverflow ...

随机推荐

  1. Linux实战(15):Centos 防火墙常见端口命令

    开启命令 firewall-cmd --zone=public --add-port=80/tcp --permanent 关闭命令 firewall-cmd --zone=public --remo ...

  2. OKR工作法

    OKR 目标与关键成果 [Objectives and Key Results] OKR是目标管理工具,它的价值不在于是否完成OKR,而在于呈现出团队最应该关注的事情,通过持续性的沟通确保每个人都聚焦 ...

  3. 使用swagger遇到的问题

    1.定义全局的请求参数时, defaultValue不能是中文,不然一直是请求中 ParameterBuilder userName = new ParameterBuilder(); Paramet ...

  4. 分享一个php的防火墙,拦截SQL注入和xss

    一个基于php的防火墙程序,拦截sql注入和xss攻击等 安装 composer require xielei/waf 使用说明 $waf = new \Xielei\Waf\Waf(); $waf- ...

  5. 怎么摆脱又臭又长的 Git 命令?

    在使用 Git 的时候,虽然大部分时候我们用的是图形客户端,但图形客户端不能解决所有的操作,所以,也少不了要需要使用命令行的时候. 但有些 Git 命令和参数确实又不好记,甚至有的命令每次要用的时候需 ...

  6. 使用Maven那么久了,你对企业级Maven的核心配置了解多少?

    写在前面 相信从事Java工作的小伙伴们多多少少都会接触到Maven.使用Maven来搭建项目,能够极大的方便我们构建项目的依赖关系,对于项目中需要依赖的Jar包,也只是简单的在pom.xml中进行配 ...

  7. CSS中居中的完全指南(中英对照翻译)

    翻译自:https://css-tricks.com/centering-css-complete-guide/ Centering things in CSS is the poster child ...

  8. Jmeter JDBC Request 使用详解

    本篇博文讲解以MySQL为例,搞懂JDBC Request中MySQL的使用方法,换成其它数据库, 如Oracle.PSQL也会很容易上手. 一.基本配置 1.首先我们先了解一下,不同数据库的驱动类和 ...

  9. Vue路由History模式分析

    Vue路由History模式分析 Vue-router是Vue的核心组件,主要是作为Vue的路由管理器,Vue-router默认hash模式,通过引入Vue-router对象模块时配置mode属性可以 ...

  10. vue的二级联动,数据是从php获取到的

    1.首先,一级要有change改变事件的关键字,v-on:change="selectarr($event)" 这是created(){}函数里面的自动调用一级分类的数据 html ...