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

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

前言

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


尊敬的用户${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.

总结

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

猜你喜欢

  • Python中顺序表的实现简单代码分享

    2022-08-31 22:26:36
  • Python/JS实现常见加密算法的示例代码

    2023-01-25 08:17:29
  • js正则相关知识点专题

    2024-05-13 10:07:08
  • Python中OpenCV实现简单车牌字符切割

    2023-09-19 18:53:59
  • 浅析python的Lambda表达式

    2021-11-16 23:51:19
  • python之消除前缀重命名的方法

    2021-12-25 09:28:42
  • SQL Server 2000中的触发器使用

    2024-01-15 15:33:34
  • 网站的视觉路径和版式设计

    2008-04-15 14:35:00
  • python使用numpy实现直方图反向投影示例

    2022-09-18 11:28:55
  • Python中的并发编程asyncio库入门使用

    2021-02-13 05:03:52
  • 利用python程序帮大家清理windows垃圾

    2021-12-10 22:13:04
  • ASP中模拟PHP的关联数组

    2009-12-25 16:31:00
  • mysql update case 更新字段值不固定的操作

    2024-01-15 06:25:41
  • Python截图的五个方法实例总结

    2022-07-13 10:40:04
  • 人脸识别具体案例(李智恩)

    2023-05-18 22:32:55
  • 详解Vue返回值动态生成表单及提交数据的办法

    2024-05-28 16:09:58
  • 前端开发中一些常用技巧总结

    2010-07-18 13:13:00
  • 用python代码将tiff图片存储到jpg的方法

    2021-11-24 19:54:49
  • ORACLE 最大连接数的问题

    2009-07-23 14:27:00
  • 在VS2019环境下使用Opencv调用GPU版本YOLOv4算法的详细过程

    2023-05-12 10:50:46
  • asp之家 网络编程 m.aspxhome.com