网络编程
位置:首页>> 网络编程>> 网络编程>> 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
投稿

猜你喜欢

  • 系统模块import os系统模块用于对系统进行操作。常用方法os模块的常用方法有数十种之多,本文中只选出最常用的几种,其余的还有权限操作、
  • 由Oralce8.1开始,Oracle增加了一个新的特性就是Stored Outlines,或者称为Plan Stability(计划稳定性
  • 写在前面贪吃蛇,吃豆人,迷宫,井字游戏......这些小游戏我相信大家小的时候肯定玩过,或许在某个时段还沉迷过.随着年龄的增长,这些小游戏离
  • 在Python中,多线程是实现并发的一种方式。多线程可以让程序在同一时间内进行多个任务,从而提高程序的效率和执行速度。本文将介绍Python
  • Java    Java 是由 Sun 公司开发而成的一种编程语言,利用 Jave 写成的小程序叫做 Java
  • Django 中的时区在现实环境中,存在有多个时区。用户之间很有可能存在于不同的时区,并且许多国家都拥有自己的一套夏令时系统。所以如果网站面
  • 在mysql安装目录的bin下, 运行mysql --install MYSQL5查看服务中, 会多一个MYSQL5的服务XAMPP的控制面
  • 学习目的 接触验证控件 昨天介绍了SQL SERVER插入数据,但是我们省略了验证输入这一步。以前的做法是用语句逐个判断输入的正确性,如是否
  • 本XML系列教程将分三部分发布,到最后一期我们将拥有一个功能全面,更加友好的XML菜单。本教程这个第一期涉及到了一些XML的基础知识。大家都
  • 一直以来都是用python脚本,执行的时候就是在终端直接命令执行,或者直接输入代码执行,最近为了方便他人使用,想做个界面,可以通过里面的控件
  • 一、增强的可扩展性 Oracle9i Real Application Clusters是Oracle的下一代并行服务器系列产品。Oracl
  • 在Flash播放器运行时,将不同来源的资源划分到独立的沙箱(sandbox)内,不同沙箱之间不能彼此操作数据(除非目标沙箱做过一些设置,授权
  • 运行多进程 每个子进程的内存空间是互相隔离的 进程之间数据不能共享的互斥锁但是进程之间都是运行在一个操作系统上,进程之间数据不共享,但是共享
  • 1、root函数格式root()功能描述返回一个路径串变量应用代码'sample string = c:\intels\jingca
  • 1.关系模型:用二维表格结构表示实体集,外键表示实体间联系的数据模型称为关系模型。关系模型是由若干个关系模式组成的集合。2.关系模式:关系模
  • 前篇我们稍微学习了Python中时间的获取,这次继续学习日期的时区转换,格式化等等。开发中常用的日期操作还有哪些?时区转换显示日期格式化秒数
  • 需求我的需求是批量裁剪某一文件夹下的所有图片,并指定裁剪宽高。思路1、 先使用PIL.Image.size获取输入图片的宽高。2、宽高除以2
  • 本文主要用python实现了对网站的模拟登录。通过自己构造post数据来用Python实现登录过程。当你要模拟登录一个网站时,首先要搞清楚网
  • 获取需要使用到正则的两个对象:使用的是用正则对象Pattern 和匹配器Matcher。用法:范例: Pattern p = Pattern
  • 进程的概念程序是没有运行的代码,静态的;进程是运行起来的程序,进程是一个程序运行起来之后和资源的总称;程序只有一个,但同一份程序可以有多个进
手机版 网络编程 asp之家 www.aspxhome.com