package com.xiangxue.jack.pushpull;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test11 {
public static void main(String[] args) {
String str = "1,2,3,4,1,2,4,2";
String modelStr1 = "1";
String modelStr2 = "2";
//求第2次出现的1
System.out.println("modelStr1==" + getFromIndex(str, modelStr1, 2));
//求第2次出现的2
System.out.println("modelStr2==" + getFromIndex(str, modelStr2, 2));
//求第3次出现的2
System.out.println("modelStr2==" + getFromIndex(str, modelStr2, 3));
}
/**
* 计算重复元素第 n个的下标
* @param str 原字符串
* @param modelStr 子字符串
* @param count 需要计算出现的第几次
* @return
*/
public static int getFromIndex(String str, String modelStr, Integer count) {
//对子字符串进行匹配
Matcher slashMatcher = Pattern.compile(modelStr).matcher(str);
int index = 0;
//matcher.find(),尝试查找与该模式匹配的输入序列的下一个子序列
while(slashMatcher.find()) {
index++;
//当modelStr字符第count次出现的位置
if(index == count){
break;
}
}
//matcher.start(),返回以前匹配的初始索引。
return slashMatcher.start();
}
}
运行结果: