文
章
目
录
章
目
录
学习使用String.indexOf()方法查找给定字符串中字符或子字符串的位置。indexOf ()是查找子字符串的标准方法,几乎所有编程语言都可以使用indexOf()方法。
如果我们不需要子字符串的位置,而只想验证子字符串是否存在,那么请考虑使用String.contains() API。
String.indexOf() API
字符串的 indexOf() 方法在 Java 中用于返回指定字符或字符串的索引位置。indexOf() 方法是一个重载方法,它接受两个参数:
- substring 或 ch:需要在当前字符串中查找的子字符串或字符。
- fromIndex:搜索的起始位置,即在当前字符串中开始查找的索引位置。
int indexOf(String substring)
int indexOf(String substring, int fromIndex)
int indexOf(int ch)
int indexOf(int ch, int fromIndex)
如果在字符串中找不到参数字符或子字符串,则该方法返回-1
。
2. String.indexOf()示例
让我们看几个例子来更好地理解indexOf()。
2.1. 查找子串位置
在下面的示例中,我们检查给定字符串中是否存在子字符串 “World”。如果存在,子字符串在哪个索引位置出现呢?
子字符串位于索引位置6,indexOf() 方法返回值为6。
String str = "Hello World";
Assertions.assertEquals(6, str.indexOf("World"));
2.2. 从索引中查找子字符串
在某些情况下,我们可能想要定位子字符串,但仅在一定数量的字符之后。在这种情况下,我们可以传递第二个参数fromIndex来跳过指定数量的字符,然后从子字符串或字符开始搜索。
在下面的示例中,字符“o”出现在索引位置 4 和 7 处。假设我们必须跳过前 5 个字符,然后只能搜索字符“o”。正如预期的那样,indexOf()方法返回 7,因为这是字符“o”在索引位置 5 之后第一次出现。
Assertions.assertEquals(7, str.indexOf('o', 5));
3. 不允许NULL
不允许传递null参数,这将导致NullPointerException。
Assertions.assertThrows(NullPointerException.class, () -> {
str.indexOf(null);
});