import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class test {
public static void main(String[] args) {
System.out.println(getIndexOf("aaOKaaOKaaOK", "OK", 2));
}
/**
* 查询一个字符串中,获取第n个词出现的下标
* 例如 入参 data : aaOKaaOKaaOK
* str: OK
* num: 2
* 出参 则返回 6
*/
public static Integer getIndexOf(String data, String str, int num) {
int indexNum = 0;
try {
if (data == null || "".equals(data) || str == null || "".equals(str)) {
return null;
}
if (num < 1) {
return null;
}
Pattern pattern = Pattern.compile(str);
Matcher findMatcher = pattern.matcher(data);
//标记遍历字符串的位置
while (findMatcher.find()) {
indexNum++;
if (indexNum == num) {
break;
}
}
return findMatcher.start();
} catch (IllegalStateException e) {
// 若 data 为 1212,str 为 1 num 为 3 ,
// data中出现的重复字符为 2 次, 则抛出该异常
return null;
}
}
}
Java 查询字符串中,获取第n个词出现的下标
最新推荐文章于 2024-06-29 03:27:40 发布