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

本文转载自 http://www.cnblogs.com/qinying/archive/2008/09/22/1295730.html

定位子串是指在一个字符串中寻找其中包含的子串或者某个字符。在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用于搜索在一个字符串中,出现在一个字符数组中任意字符最后一次出现的位置。

时间: 2024-10-29 05:11:04

String中的Indexof,LastIndexOf, Indexofany,LastIndexOfAny 的区别的相关文章

String中的split(",")和split(",",-1)的区别

String中的split(",")和split(",",-1)的区别 1.当字符串最后一位有值时,两者没有区别 2.当字符串最后一位或者N位是分隔符时,前者不会继续切分,而后者继续切分.即前者不保留null值,后者保留. 举例: package stringsplit;public class stringSplit {     public static void main(String[] args) {          String line = &quo

String中的两种实例化方式的区别

直接赋值:(String str = "字符串");只会开辟一块堆内存空间,并且会自动保存在对象池中以供下次重复使用. 构造方法:(String str = new  String ("字符串")); 会开辟两块内存空间,其中有一块空间将变成垃圾,并且不会自动入池,但是用户可以使用intern()方法手动入池. 在实际的开发中,String对象的实例化永远都是采用直接赋值的方式完成的.

Servlet 中为多项选择题判分---String类的indexOf()方法妙用

首先来看一下String类的indexOf()方法的用法: 1 public class FirstDemo1 { 2 /** 3 *API中String的常用方法 4 */ 5 // 查找指定字符串是否存在 6 public static void main(String[] args) { 7 String str1 = "abcdefghijklmnabc"; 8 // 从头开始查找是否存在指定的字符 9 System.out.println(str1.indexOf("

String中的方法

这里只是总结一些我觉得有用可能会用到的: 详细api:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh 1.str.getChars(int strBegin,  int strEnd,  char[] dst,  int  dstBegin):将str的一部分(下标从strBegin到strEnd-1)复制到字符数组dst从dstBegin开始到des[dstBegin+(复制的长度)]将会覆盖原来的字符..注意控制下标.. String s1

IndexOf() LastIndexOf() Contains() StartsWith() EndsWith()方法比较

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Diagnostics; namespace CA100 { class Program { //循环次数:5百万次 const int COUNT = 5000000; //外围循环次数:5次 const int NUM = 5; //准确测量运行时间 static

BIRT 中的indexOf函数

原以为BIRT中的indexOf函数直接与JavaScript中的一样,就如同substr和replace一样,但是一直遇到function undefined的错误. domain = row["MEDIUM_STRING_VAL"].substr(1); i = BirtStr.indexOf('\|', domain); domain.substr(0, i);

string中常用的函数

发现在string在处理这符串是很好用,就找了一篇文章放在这里了.. 用 string来代替char * 数组,使用sort排序算法来排序,用unique 函数来去重1.Define           string s1 = "hello";           string s2 = "world";           string s3 = s1 + "," + s2 +"!\n";2.append          

C++读一行到string中与vc的debug assertion failed!问题

将输入的一行读到string中不需要像用数组那样,考虑给多少大小的空间,这可以使得做acm题更加方便. c++98有两个函数可以读一行到string中,如下: istream& getline (istream& is, string& str, char delim); istream& getline (istream& is, string& str); 例子: #include <iostream> #include <string

C++string中有关字符串内容修改和替换的函数浅析

1.assign() 原型: //string (1) basic_string& assign (const basic_string& str); //substring (2) basic_string& assign (const basic_string& str, size_type subpos, size_type sublen); //c-string (3) basic_string& assign (const charT* s); //buf