网络编程
位置:首页>> 网络编程>> 网络编程>> Java用正则表达式实现${name}形式的字符串模板实例

Java用正则表达式实现${name}形式的字符串模板实例

作者:daisy  发布时间:2023-08-05 14:10:01 

标签:java,字符串,模板,正则表达式

前言

相信大家可能曾遇到过这种情况,在开发中类似站内信的需求时,我们经常要使用字符串模板,比如


尊敬的用户${name}。。。。

里面的${name}就可以替换为用户的用户名。

下面使用正则表达式简单实现一下这个功能:


/**
 * 根据键值对填充字符串,如("hello ${name}",{name:"xiaoming"})
 * 输出:
 * @param content
 * @param map
 * @return
 */
public static String renderString(String content, Map<String, String> map){
 Set<Entry<String, String>> sets = map.entrySet();
 for(Entry<String, String> entry : sets) {
  String regex = "\\$\\{" + entry.getKey() + "\\}";
  Pattern pattern = Pattern.compile(regex);
  Matcher matcher = pattern.matcher(content);
  content = matcher.replaceAll(entry.getValue());
 }
 return content;
}

map里存储了键值对,然后获取键值对的集合,遍历集合进行对字符串的渲染

实例测试:


@Test
public void renderString() {
 String content = "hello ${name}, 1 2 3 4 5 ${six} 7, again ${name}. ";
 Map<String, String> map = new HashMap<>();
 map.put("name", "java");
 map.put("six", "6");
 content = StringHelper.renderString(content, map);
 System.out.println(content);
}

有两个变量需要替换,namesix,对应的值分别为Java和6,同时name调用了两次。

结果:


hello java, 1 2 3 4 5 6 7, again java.

总结

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com