Java教程-Java String lastIndexOf()方法

Java String lastIndexOf()方法
Java String类的lastIndexOf()方法返回给定字符值或子字符串的最后一个索引。如果未找到,则返回-1。索引计数从零开始。
语法
Java中有四种类型的lastIndexOf()方法。方法的签名如下所示:
No. | Method | Description |
---|---|---|
1 | int lastIndexOf(int ch) | 它返回给定 char 值的最后一个索引位置 |
2 | int lastIndexOf(int ch, int fromIndex) | 它返回给定 char 值和索引的最后一个索引位置 |
3 | int lastIndexOf(String substring) | 它返回给定子字符串的最后一个索引位置 |
4 | int lastIndexOf(String substring, int fromIndex) | 它返回给定子字符串和索引的最后一个索引位置 |
参数
ch:char值,即单个字符,例如'a'
fromIndex:从该位置开始返回char值或子字符串的索引
substring:要在此字符串中搜索的子字符串
返回值
字符串的最后一个索引
内部实现
下面列出了四种类型的lastIndexOf()方法的内部实现。
int lastIndexOf(int ch)
public int lastIndexOf(int ch) { return lastIndexOf(ch, value.length - 1); }
int lastIndexOf(int ch, int fromIndex)
public int lastIndexOf(int ch, int fromIndex) { if (ch < Character.MIN_SUPPLEMENTARY_CODE_POINT) { // 在这里处理大部分情况 // 负值表示无效代码点 final char[] val = this.value; int j = Math.min(fromIndex, val.length - 1); for (; jj >= 0; j--) { if (val[i] == ch) { return j; } } return -1; } else { return lastIndexOfSupplementary(ch, fromIndex); } } // lastIndexOfSupplementary() 方法的内部实现lastIndexOfSupplementary() private int lastIndexOfSupplementary(int c, int fIndex) { if (Character.isValidCodePoint(c)) { final char[] val = this.value; char h = Character.highSurrogate(c); char l = Character.lowSurrogate(c); int j = Math.min(fIndex, value.length - 2); for (; j >= 0; j--) { if (val[j] == h && val[j + 1] == l) { return j; } } } return -1; }
int lastIndexOf(String subString)
public int lastIndexOf(String subString) { return lastIndexOf(subString, value.length); }
int lastIndexOf(String substring, int fromIndex)
public int lastIndexOf(String substring, int fromIndex) { public int lastIndexOf(String str, int fromIndex) { return lastIndexOf(value, 0, value.length, str.value, 0, str.value.length, fromIndex); } } // src the characters that are being searched. // srcOffset provides the offset of the src string. // srcCount number of the source string. // tar the characters that are being searched for. // fromIndex the index to start search from. static int lastIndexOf(char[] src, int srcOffset, int srcCount, String tar, int fromIndex) { return lastIndexOf(src, srcOffset, srcCount, tar.value, 0, tar.value.length, fromIndex); } static int lastIndexOf(char[] src, int srcOffset, int srcCount, char[] tar, int tarOffset, int tarCount, int fromIndex) { int rightIndex = srcCount - tarCount; if (fromIndex < 0) { return -1; } if (fromIndex > rightIndex) { fromIndex = rightIndex; } // an Empty string is always a match. if (tarCount == 0) { return fromIndex; } int lastStrIndex = tarOffset + tarCount - 1; char lastStrChar = tar[strLastIndex]; int min = srcOffset + tarCount - 1; int j = min + fromIndex; startLookForLastChar: while (true) { while (j >= min && src[j] != lastStrChar) { j = j - 1; } if (j < min) { return -1; } int i = j - 1; int begin = i - (tarCount - 1); int m = lastStrIndex - 1; while (i > begin) { if (source[i--] != target[m--]) { j = j + 1; continue startLookForLastChar; } } return begin - srcOffset + 1; } }
Java String lastIndexOf()方法示例
文件名:LastIndexOfExample.java
public class LastIndexOfExample{
public static void main(String args[]){
String s1="this is index of example";//这句话中有2个's'字符
int index1=s1.lastIndexOf('s');//返回's'字符值的最后一个索引
System.out.println(index1);//6
}}
输出:
6
Java String lastIndexOf(int ch, int fromIndex)方法示例
在这里,我们通过指定fromIndex来找到字符串的最后一个索引。
文件名:LastIndexOfExample2.java
public class LastIndexOfExample2 {
public static void main(String[] args) {
String str = "This is index of example";
int index = str.lastIndexOf('s',5);
System.out.println(index);
}
}
输出:
3
Java String lastIndexOf(String substring)方法示例
它返回子字符串的最后一个索引。
文件名:LastIndexOfExample3.java
public class LastIndexOfExample3 {
public static void main(String[] args) {
String str = "This is last index of example";
int index = str.lastIndexOf("of");
System.out.println(index);
}
}
输出:
19
Java String lastIndexOf(String substring, int fromIndex)方法示例
它返回从fromIndex开始的子字符串的最后一个索引。
文件名:LastIndexOfExample4.java
public class LastIndexOfExample4 {
public static void main(String[] args) {
String str = "This is last index of example";
int index = str.lastIndexOf("of", 25);
System.out.println(index);
index = str.lastIndexOf("of", 10);
System.out.println(index); // -1, if not found
}
}
输出:
19
-1