项目中碰到了这样的问题,例如数据库中有一个字符串模版如下:
${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);
}
- 运行结果: