【发布时间】:2018-04-14 11:11:52
【问题描述】:
我们可以对String的indexof()方法使用regexp吗? 如果有怎么办
据我所知,这应该打印 1 但它
打印“-1”
System.out.println("hello".indexOf("[e]"));
谁能解释一下
【问题讨论】:
我们可以对String的indexof()方法使用regexp吗? 如果有怎么办
据我所知,这应该打印 1 但它
打印“-1”
System.out.println("hello".indexOf("[e]"));
谁能解释一下
【问题讨论】:
根据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'));
【讨论】:
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;
}
}
【讨论】: