我们可以将正则表达式用于字符串的indexof((方法吗?如果是这样,如何
据我所知,这应该打印 1,但它
打印"-1">
System.out.println("hello".indexOf("[e]"));
有人可以解释一下吗
根据文档,没有接受正则表达式的indexof
版本。它是字符或字符串。
int indexOf(int ch)
返回第一个字符串中的索引 指定字符的出现次数。int indexOf(int ch, int fromIndex)
返回第一个字符串中的索引 出现指定字符,在 指定的索引。int indexOf(String str)
返回此索引 指定子字符串的第一个匹配项的字符串。int indexOf(String str, int fromIndex)
返回此索引 指定子字符串第一次出现的字符串,从 指定的索引。
根据这一点,您的代码应该是
System.out.println("hello".indexOf('e'));
indexOf
只返回第一次出现的索引。我们可以轻松地使用正则表达式模拟这种行为。
例:
Matcher m = Pattern.compile("[e]").matcher("Hello");
if (m.find()) {
System.out.println(m.start());
}
你可以把它放到一个方法中:
private static int indexOf(String s, String pattern) {
Matcher m = Pattern.compile(pattern).matcher(s);
if (m.find()) {
return m.start();
} else {
return -1;
}
}