文
章
目
录
章
目
录
String.lastIndexOf() 方法返回指定字符或子字符串的最后一个索引位置。如果参数在字符串中未找到,则该方法返回 -1。请注意,字符串的索引从零开始。
1. String.lastIndexOf() API
lastIndexOf ()方法有四种重载形式。
int lastIndexOf(String substring)
int lastIndexOf(String substring, int fromIndex)
int lastIndexOf(int ch)
int lastIndexOf(int ch, int fromIndex)
方法参数是:
- substring或ch:要查找的子字符串或字符。
- fromIndex:搜索从字符串中的指定位置开始。
该方法返回最后一次出现的指定子字符串的索引,如果不存在则返回 -1。
2. String.lastIndexOf()示例
在下面的Java程序中,子字符串“Java”出现了两次。当我们使用lastIndexOf()搜索字符串时,它返回最后一个“Java”字符串的位置。字母“J”存储在索引位置 41 上,我们可以通过搜索字符“J”来验证该索引位置。
String str = "Hello world Java programmers, welcome to Java world !";
Assertions.assertEquals(41, str.lastIndexOf("Java"));
Assertions.assertEquals(41, str.lastIndexOf('J'));
假设要从字符串中的特定位置搜索子字符串。例如,我们想知道单词“Java”与逗号的距离。我们可以将逗号的位置作为第二个方法参数传递。这次,在索引位置 12 处找到了“Java”。
String str = "Hello world Java programmers, welcome to Java world !";
Assertions.assertEquals(12, str.lastIndexOf("Java", str.indexOf(",")));
Assertions.assertEquals(12, str.lastIndexOf('J', str.indexOf(",")));
3.Null和空字符串
不允许向lastIndexOf()传递null参数,这将导致NullPointerException异常。
Assertions.assertThrows(NullPointerException.class, ()->{
str.lastIndexOf(null);
});
空字符串的位置始终被认为是在字符串的末尾,并且该方法返回由String.length()计算的值。
Assertions.assertEquals(str.length(), str.lastIndexOf(""));