java
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String regex = "\\$\\{(.*?)\\}"; Map<String, Object> map = new HashMap<>(); map.put("name", "jake"); map.put("age", 18); map.put("work", "学生"); map.put("color", ""); String mes = MessUtil.getMes("我的朋友是${name},他今年${age}岁,是一名${work},他喜欢的颜色是${color}!", regex, "${", "}", map); System.out.println(mes); } } class MessUtil { /** * 组装信息 * @param soap 原始信息 * @param regex 条件 占位符 * @param startStr 删除掉的内容 * @param endStr 删除掉的内容 * @param map 根据原始信息占位符中的内容作为key,获取替换进占位符中的内容 * @return */ public static String getMes(String soap, String regex, String startStr, String endStr, Map<String, Object> map) { List<String> subUtil = getSubUtil(soap, regex); for (String s : subUtil) { if (map.containsKey(s) && null != map.get(s)) { soap = soap.replace(startStr + s + endStr, map.get(s).toString()); // 配套另一篇文章,计算器数字计算,可用此办法 // soap = soap.replace(startStr + s + endStr, "(0+"+map.get(s).toString()+")"); } } return soap; } private static List<String> getSubUtil(String soap, String regex) { Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(soap); List<String> list = new ArrayList<>(); int i = 1; while (matcher.find()) { list.add(matcher.group(i)); } return list; } }

输出结果为

  • 01
我的朋友是jake,他今年18岁,是一名学生,他喜欢的颜色是!

摘自https://blog.csdn.net/qq_39922867/article/details/103736265