用于indexof方法的java中的regexp

时间:2018-04-14 11:11:53

标签: java regex string indexof

我们可以将regexp用于String的indexof()方法吗? 如果是这样的话

根据我的知识,这应该打印1但是它           打印" -1"

 System.out.println("hello".indexOf("[e]"));

有人可以解释

2 个答案:

答案 0 :(得分:0)

根据documentation,没有indexof的版本接受正则表达式。它可以是char或String。

  

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'));

答案 1 :(得分:0)

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;
    }
}