废话就不说了,个人觉得直接看代码更直观
private static void test3() {
//需要处理的目标字符串,将串中的$符号以及后面的字段用字段对应的真实值替换
String content = "尊敬的会员您好:您订购的{$product_name},{$price},{$picuter},{$weight}已下单成功,订单号为:{$order_sn},我们会尽快为您发货。24小时服务热线:4009111111。回TD退订";
//将字典名字以及对应的值放到一个map中
Map<String, String> map = new HashMap<>();
map.put("product_name", "牛肉");
map.put("order_sn", "118");
map.put("price", "123.56");
map.put("picuter", "abc.jpg");
map.put("weight", "23.45g");
StringBuffer sb = new StringBuffer();
//通过Pattern编译正则表达式 w+ 表示一个或者多个字母、数字、下划线
Pattern p = Pattern.compile("\\$\\w+");
//匹配目标字符串
Matcher m = p.matcher(content);
//匹配结果处理
while(m.find()) {
//获取匹配到的字段名
String subString = m.group();
//将匹配到的字段名打印,看起来更直观
System.out.println("subString:" + subString);
//将字段用对应的真实值替换
m.appendReplacement(sb, map.get(subString.substring(1)));
//打印替换后的结果
System.out.println(sb);
}
//补全目标串
m.appendTail(sb);
System.out.println(sb.toString());
}
运行结果如下(每次循环完替换后的结果是不是很直观^_^):
有兴趣的同学可以看看这篇博文:https://www.cnblogs.com/xyou/p/7427779.html