Java lastIndexOf 总是 return -1 如果字符是 space 并且设置了 fromIndex

Java lastIndexOf always return -1 if the character is space and fromIndex is set

测试代码

public class HelloWorld{
     public static void main(String []args){
        System.out.println("Hello World".lastIndexOf(' '));
        System.out.println("Hello World".lastIndexOf(' ', 1));
        System.out.println("Hello World".lastIndexOf('e'));
        System.out.println("Hello World".lastIndexOf('e', 1));
     }
}

结果

5
-1
1
1

我预计第二个结果是 5,但结果是 -1。怎么可能第一个对第二个错呢?

lastIndexOf()是从右往左走的,所以当它以索引1(第二个字符,即'e')开始时,没有找到space(有索引5).

最简单的方法

lastIndexOf(int ch, int fromIndex) returns index of ch only if it occurs at or before fromIndex, Otherwise return -1.

System.out.println("Hello World".lastIndexOf(' ', 3));

returns -1.

System.out.println("He llo World".lastIndexOf(' ', 3));

returns 2.