正则表达式的使用,记录一下,以后用到了直接复制
要想通过{},并且根据{}中的字段名进行数据的匹配并替换,我们需要用到正则表达式,下面是代码的实现
private static final Pattern PATTERN = Pattern.compile("\\{([^}]+)}");
public String selectTemplateDetailByRule() {
StringBuilder stringBuilder = new StringBuilder("1.{aa.1},2.{bb.1},3.{cc.1}");
Map<String,String> map = new HashMap<>();
map.put("aa.1","第一条数据");
map.put("bb.1","第二条数据");
map.put("cc.1","第三条数据");
final Map<String,String> finalMap = map;
//使用正则匹配出符合 {} 的数据
Matcher matcher = PATTERN.matcher(stringBuilder);
while (matcher.find()) {
String match = matcher.group(1);
String s1 = finalMap.get(match);
stringBuilder.replace(matcher.start(), matcher.end(), s1);
//因为我们替换会导致原来的字符串的长度和位置发生改变,第二次替换是位置就错误了,所以要借助下面这个保证填充后的数据正确
matcher.reset(stringBuilder.toString());
}
String content = stringBuilder.toString();
return content;
}