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);
}
有两个变量需要替换,name
和six
,对应的值分别为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