如果字符为空格且设置了fromIndex,则Java lastIndexOf始终返回-1

如果字符为空格且设置了fromIndex,则Java lastIndexOf始终返回-1,java,string,lastindexof,Java,String,Lastindexof,测试代码 结果 我原以为第二个结果是5,但结果是-1。第一个字母怎么可能是对的,而第二个字母怎么可能是错的呢?lastIndexOf从右向左,所以当它以索引1开头时,第二个字符,即“e”,它找不到一个索引为5的空格。lastIndexOf从右向左,所以当它以索引1开头时,第二个字符,即“e”,它找不到索引为5的空间。最简单的方法 lastIndexOfint ch,int fromIndex仅当它出现在fromIndex或之前时才返回ch的索引,否则返回-1 返回-1 返回2 最简单的方法 la

测试代码

结果

我原以为第二个结果是5,但结果是-1。第一个字母怎么可能是对的,而第二个字母怎么可能是错的呢?

lastIndexOf从右向左,所以当它以索引1开头时,第二个字符,即“e”,它找不到一个索引为5的空格。

lastIndexOf从右向左,所以当它以索引1开头时,第二个字符,即“e”,它找不到索引为5的空间。

最简单的方法

lastIndexOfint ch,int fromIndex仅当它出现在fromIndex或之前时才返回ch的索引,否则返回-1

返回-1

返回2

最简单的方法

lastIndexOfint ch,int fromIndex仅当它出现在fromIndex或之前时才返回ch的索引,否则返回-1

返回-1

返回2


签出文档:@返回此对象表示的*字符序列中最后一次出现的小于*或等于{@code fromdex}或{@code-1}的字符的索引*如果字符未出现在该点之前。从javadoc:如果此字符串中的fromIndex位置或之前未出现此类字符,则返回-1。Thx伙计们。我知道没有找到-1,但我没有注意到是否从右向左。名为fromIndex的变量让我感到困惑,我假设它搜索start from fromIndex的子字符串。签出文档:@返回此对象表示的*字符序列中最后出现的字符的索引,该索引小于*大于或等于{@code fromIndex},或{@code-1}*如果字符未出现在该点之前。从javadoc:如果此字符串中的fromIndex位置或之前未出现此类字符,则返回-1。Thx伙计们。我知道没有找到-1,但我没有注意到是否从右向左。名为fromIndex的变量让我感到困惑,我假设它搜索start fromIndex的子字符串。
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
System.out.println("Hello World".lastIndexOf(' ', 3));
System.out.println("He llo World".lastIndexOf(' ', 3));