可能重复:
find the nth occurence of a substring in a string in java?
有没有办法在字符串中获得特定匹配?
如果我们有String test = "this is a long test which is a test of a test";
,那么我们是否可以使用Matcher
来获取test
的第二(或任何特定)实例?
我以为我可以使用Matcher.find(x)
,但这看起来效果不好......
答案 0 :(得分:3)
尝试
int firstIndex = string.indexOf("test");
if (firstIndex >= 0) {
int secondIndex = string.indexOf("test", firstIndex+1);
}
另外,如果你想要第n次出现,你可以做一个循环:
int nthIndex = -1;
for (int i=0; i<n; i++ ) {
nthIndex = string.indexOf("test", nthIndex +1);
if (nthIndex < 0) {
break;
}
}
这将为您提供nthIndex,如果未找到则为-1。
答案 1 :(得分:1)
我认为这个功能可以完成这项工作
int find(String s, String pattern, int occurence) {
Matcher m = Pattern.compile(pattern).matcher(s);
for (int i = 1; m.find(); i++) {
if (i == occurence) {
return m.start();
}
}
throw new RuntimeException();
}
答案 2 :(得分:0)
您可以使用indexOf
方法执行此操作。
String string;
int one = string.indexOf(strToBeSearched);
int two = string.indexOf(strToBeSearched, one+1);
此外,您应该检查one
是否&gt; = 0(如果字符串中不存在strToBeSearched
,indexOf
将返回-1)