String.indexOf()的四种方法
String.indexOf(String str)
官方解释 :
返回此字符串中第一次出现指定子字符串的索引。返回的索引是最小值k ,其中: this.startsWith(str, k)如果不存在这样的k值,则返回-1 。
参数:
str – 要搜索的子字符串。
返回:
指定子字符串第一次出现的索引,如果没有这样的出现,则为-1 。public int indexOf(String str) { return indexOf(str, 0); }
public static void main(String[] args) { String str="abcdefg"; System.out.println("String.indexOf(String s):"+str.indexOf("b")); } }
String.indexOf(String str ,int from index)
官方解释:
返回此字符串中第一次出现指定子字符串的索引,从指定索引开始。
返回的索引是最小值k ,其中:k >= fromIndex && this.startsWith(str, k)
如果不存在这样的k值,则返回-1 。
参数:
str – 要搜索的子字符串。
fromIndex – 开始搜索的索引。
返回:
指定子字符串第一次出现的索引,从指定索引开始,如果没有这样的出现,则为-1public int indexOf(String str, int fromIndex) { return indexOf(value, 0, value.length, str.value, 0, str.value.length, fromIndex); }
public static void main(String[] args) { String str="abcdefgabcaaabc"; // System.out.println("String.indexOf(String s):"+str.indexOf("b")); System.out.println("String.indexOf(String str ,int fromIndex):"+str.indexOf("abc",1)); } }
String.indexOf(int ch)
官方解释:
返回此字符串中第一次出现指定字符的索引。 如果值ch的字符出现在此String对象表示的字符序列中,则返回第一次出现的索引(以 Unicode 代码单元表示)。 对于 0 到 0xFFFF(含)范围内的ch值,这是满足以下条件的最小值k :this.charAt(k) == ch是真的。 对于ch其他值,它是满足以下条件的最小值k :this.codePointAt(k) == ch是真的。 在任一情况下,如果此字符串中没有出现此类字符,则返回-1 。
参数:
ch – 一个字符(Unicode 代码点)。
返回:
此对象表示的字符序列中该字符第一次出现的索引,如果该字符没有出现,则为-1 。public int indexOf(int ch) { return indexOf(ch, 0); }
public static void main(String[] args) { String str="abcdefgabcaaabc"; // System.out.println("String.indexOf(String s):"+str.indexOf("b")); // System.out.println("String.indexOf(String str ,int fromIndex):"+str.indexOf("abc ",1)); System.out.println("String.indexOf(int ch):"+str.indexOf('b')); }
String.indexOf(int ch,int fromIndex)
官方解释:
返回此字符串中第一次出现指定字符的索引,从指定索引开始搜索。
如果值ch的字符出现在此String对象表示的字符序列中,索引不小于fromIndex ,则返回第一个此类出现的索引。 对于 0 到 0xFFFF(含)范围内的ch值,这是满足以下条件的最小值k : (this.charAt(k) == ch) && (k >= fromIndex)是真的。 对于ch其他值,它是满足以下条件的最小值k : (this.codePointAt(k) == ch) && (k >= fromIndex)是真的。 在任何一种情况下,如果此字符串中的fromIndex位置或之后没有出现此类字符,则返回-1 。
fromIndex的值没有限制。 如果它是负数,它与它为零的效果相同:可以搜索整个字符串。 如果它大于此字符串的长度,则其效果与等于此字符串的长度相同:返回-1 。
所有索引均以char值(Unicode 代码单元)指定。
参数:
ch – 一个字符(Unicode 代码点)。
fromIndex – 开始搜索的索引。
返回:
此对象表示的字符序列中该字符第一次出现的索引,该索引大于或等于fromIndex ,如果该字符没有出现,则为-1 。public int indexOf(int ch, int fromIndex) { final int max = value.length; if (fromIndex < 0) { fromIndex = 0; } else if (fromIndex >= max) { // Note: fromIndex might be near -1>>>1. return -1; }
public static void main(String[] args) { String str="abcdefgabcaaabc"; // System.out.println("String.indexOf(String s):"+str.indexOf("b")); // System.out.println("String.indexOf(String str ,int fromIndex):"+str.indexOf("abc ",1)); // System.out.println("String.indexOf(int ch):"+str.indexOf('b')); System.out.println("String.indexOf(int ch ,int fromIndex): "+str.indexOf('a', 3)); }