参数化字符串解析
需要实现一个解析表达式的功能,表达式中通过${}占位表示动态的变量,因此需要用到正则表达式,但有时我们需要对指定的第N个匹配项进行操作。
下面以替换操作为例:
/**
*
* @param str
* @param n 第n个
* @param regex 正则 "\\$\\{(.*?)\\}"匹配${}
* @param replacement
* @return
*/
public static String replaceNth(String str,int n,String regex,String replacement){
Pattern p = Pattern.compile(regex);
Matcher matcher = p.matcher(str);
while (matcher.find()){
n--;
if (n == 0){
return str.substring(0, matcher.start()) + replacement + str.substring(matcher.end());
}
}
return str;
}