regexp in java for indexof method



我们可以将正则表达式用于字符串的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;
    }
}

最新更新