【问题标题】:regexp in java for indexof method [duplicate]java中用于indexof方法的正则表达式[重复]
【发布时间】:2018-04-14 11:11:52
【问题描述】:

我们可以对String的indexof()方法使用regexp吗? 如果有怎么办

据我所知,这应该打印 1 但它
打印“-1”

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

谁能解释一下

【问题讨论】:

    标签: java regex string indexof


    【解决方案1】:

    根据documentation,没有接受正则表达式的indexof 版本。它是一个字符或一个字符串。

    int indexOf(int ch)
    返回此字符串中第一个的索引 出现指定字符。
    int indexOf(int ch, int fromIndex)
    返回此字符串中第一个的索引 出现指定字符,开始搜索 指定索引。
    int indexOf(String str)
    返回 this 中的索引 指定子字符串第一次出现的字符串。
    int indexOf(String str, int fromIndex)
    返回 this 中的索引 指定子字符串第一次出现的字符串,从 指定的索引。

    根据这个你的代码应该是

    System.out.println("hello".indexOf('e'));
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-02-10
        • 2014-05-13
        • 1970-01-01
        • 1970-01-01
        • 2014-01-20
        • 2012-10-26
        • 1970-01-01
        相关资源
        最近更新 更多