import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** @description: 占位符* @author: *** @create: 2021-12-22 14:56**/
public class StringFormatUtil {private static final Pattern pattern = Pattern.compile("\\{(.*?)\\}");private static Matcher matcher;public static String stringFormat(String sourStr, Map<String, Object> param) {String targetStr = sourStr;if (param == null)return targetStr;try {matcher = pattern.matcher(targetStr);while (matcher.find()) {String key = matcher.group();String keyclone = key.substring(1, key.length() - 1).trim();Object value = param.get(keyclone);if (value != null)targetStr = targetStr.replace(key, value.toString());}}catch (Exception e){e.printStackTrace();}return targetStr;}public static List<String> getKey(String targetStr) {List<String> list  = new ArrayList<>();try {matcher = pattern.matcher(targetStr);while (matcher.find()) {String key = matcher.group();String keyclone = key.substring(1, key.length() - 1).trim();list.add(keyclone);}}catch (Exception e){e.printStackTrace();}return list;}public static String stringFormat(String sourStr, Object obj) {String targetStr = sourStr;matcher = pattern.matcher(targetStr);if (obj == null)return targetStr;PropertyDescriptor pd;Method getMethod;// 匹配{}中间的内容 包括括号while (matcher.find()) {String key = matcher.group();String keyClone = key.substring(1, key.length() - 1).trim();try {pd = new PropertyDescriptor(keyClone, obj.getClass());getMethod = pd.getReadMethod();// 获得get方法Object value = getMethod.invoke(obj);if (value != null)targetStr = targetStr.replace(key, value.toString());} catch (Exception e) {e.printStackTrace();}}return targetStr;}//根据出生年月计算年龄public static int getAge(Date birth) {try{Calendar cal = Calendar.getInstance();int thisYear = cal.get(Calendar.YEAR);int thisMonth = cal.get(Calendar.MONTH);int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);cal.setTime(birth);int birthYear = cal.get(Calendar.YEAR);int birthMonth = cal.get(Calendar.MONTH);int birthdayOfMonth = cal.get(Calendar.DAY_OF_MONTH);int age = thisYear - birthYear;// 未足月if (thisMonth <= birthMonth) {// 当月if (thisMonth == birthMonth) {// 未足日if (dayOfMonth < birthdayOfMonth) {age--;}} else {age--;}}return age;}catch (Exception e){e.printStackTrace();}return 0;}}

java 字符串占位符动态替换值工具类相关推荐

  1. JAVA字符串占位符替换

    JAVA字符串占位符替换 如果有字符串 "我是{0},我来自{1},今年{2}岁. 请问怎样用String的内置方法用替换掉字符串的占位符:比如"我是中国人,我来自北京,今年22岁 ...

  2. java字符串占位符%s

    字符串占位符%s 一.String.format 二.MessageFormat.format 一.String.format 语法 : String.format(String format, Ob ...

  3. JAVA字符串占位符使用

    分享知识 传递快乐 使用 replace 函数动态填充字符串 String str="Hello {0},我是 {1},今年{2}岁"; str = str.replace(&qu ...

  4. 二、SQL注入使用占位符解决、JDBC工具类、封装

    一.SQL注入使用占位符解决 //使用jdbc发送sql语句, 到数据库tb_user 查询是否有该用户名和密码的用户Connection conn = null;PreparedStatement ...

  5. java word 占位符替换,javaword占位符替换

    一.java中有什么方法可以读取占位符的字符串,并且把占位符替换成参数 可以通过字符串的format方法进行实现. 举例:string domain = "www.ykmaiz.com&qu ...

  6. Java输出PPT文件(二) - 占位符数据替换

    Java输出PPT文件(二) - 占位符数据替换 文章目录 Java输出PPT文件(二) - 占位符数据替换 0. 前言 1. 依赖 2. 代码 3. 测试 3.1 模板准备 3.2 替换结果 4. ...

  7. SQL算法中的变量使用占位符动态赋值

    需求: 1.每张表的SQL算法配置到数据库的配置表中 2.SQL算法中的条件统一使用占位符填充 3.当执行sql时需要将查询出来的SQL算法中的占位符动态赋值 一.真实案例还原 这里拿表进行演示 1. ...

  8. c语言 int64 t占位符,为什么我会得到“您必须为dtype int64提供占位符张量输出值”?...

    我正在尝试构建一个读取预先训练的模型并使用它的C++程序.我把代码from here修改了一下. 我现在拥有的是:为什么我会得到"您必须为dtype int64提供占位符张量输出值" ...

  9. java+解析占位符,如何告诉Spring使用Java映射来解析属性占位符?

    Spring提供了一个 MapPropertySource,您可以在ApplicationContext的环境中注册(您需要一个大多数ApplicationContext实现提供的Configurab ...

  10. scala 字符串占位符_如何在Scala中将带有换行符的字符串转换为字符串列表?

    scala 字符串占位符 A string is a sequence of characters and it can contain multiple lines, for this, the s ...

最新文章

  1. NVIDIA GPU上的直接线性求解器
  2. HashMap的扩容机制---resize()
  3. 现实迷途 第九章 N夜情(上)
  4. 10 款基于 jQuery 的切换效果插件推荐
  5. 移动IM开发那些事:技术选型和常见问题
  6. nzhtl1477-ただいま帰りました ( bfs )
  7. js 获取java_js中获取当前时间
  8. linux 共享移动硬盘,随时登陆上QQ 自带Linux移动硬盘实战
  9. linux内核怎么修改屏幕旋转方向_运维必备:常见的Linux系统故障及其排查的方法...
  10. 信息学奥赛C++语言: 抽奖1
  11. Docker 拉取镜像慢解决
  12. Path variable [contentHash:8] not implemented in this context: styles.[contentHash:8].css
  13. 离线语音识别_离线语音识别库_离线语音识别sdk - 云+社区 - 腾讯云
  14. java打印菱形的简单方法
  15. 82_Linux检测指定ip指定端口是否开放
  16. 苹果手机图片如何同步鸿蒙,教你如何在两台iPhone之间传照片
  17. 网站设计| 网站设计模板素材
  18. spring boot读取resources下面的文件图片
  19. iOS微信小程序网页请求走error问题
  20. 35BYJ46步进电机

热门文章

  1. RocketMQ 5.0 POP消费模式
  2. 天津理工大学物联网通信技术实验1:数字基带信号(NRZ、NRZ-I、AMI、HDB3信道编码)
  3. 阿斯加德250G固态硬盘开卡实录(主控SM2258XT,SDZNBIAMA-064G颗粒)
  4. RxJava:concat(连接)、 concatDelayError、 concatEager的使用
  5. DSP 2812: 使用C++封装SCI
  6. Spss-系统聚类软件实操
  7. 从零开始一个cli脚手架并发布到NPM(上篇)
  8. 无线网络安全与解决方案(Wireless Security)
  9. MySQL5.7.32 64位解压缩版 windows操作系统安装教程图解
  10. cleanmymac x激活码免费下载激活及使用教程