项目中碰到了这样的问题,例如数据库中有一个字符串模版如下:
${userNamme}开启了一个新的${project}
我们要替换里面的${}表达式,来实现动态的生成完整的信息~实现方式很简单如下:
- 引入pom依赖:
<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.12</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-text</artifactId><version>1.3</version></dependency>
- 使用Map来定义我们需要替换的key-value 键值对
Map<String, String> map = new HashMap<>();map.put("userName", "张三");map.put("project", "项目");
- 最终实现:
/*** @param express:el表达式* @param map:el表达式动态参数* @return*/public static String parse(String express, Map<String, String> map) {StringSubstitutor sub = new StringSubstitutor(map);return sub.replace(express);}public static void main(String[] args) {Map<String, String> map = new HashMap<>();map.put("userName", "张三");map.put("project", "项目");String text = "${userName}开启了一个新的${project}";String result = parse(text, map);System.out.println(result);}
- 运行结果: