子龙 子龙
首页
学习指南
工具
AI副业
开源项目
技术书籍

程序员子龙

Java 开发从业者
首页
学习指南
工具
AI副业
开源项目
技术书籍
  • 基础

    • java 学习路线图
    • HashMap 详解
    • Java 8 日期和时间 - 如何获取当前时间和时间戳?
    • Java 模板变量替换(字符串、占位符替换)
    • JDK 代理
    • Java SPI 详解
    • java stream 看这一篇文章就够了
    • Java 泛型详解
    • Java 动态修改注解值
    • 如何正确遍历删除List中的元素
    • 什么是Java注解
    • 异步编程神器:CompletableFuture详解
    • FIFO 、LRU、LFU算法
    • 十进制转十六进制
    • java中double类型数据加减乘除操作精度丢失问题及解决方法
    • JAVA利用反射清除实体类对应字段
    • JSON转换问题最全详解(json转List,json转对象,json转JSONObject)
    • java 8 List 根据某个字段去重
    • Java List排序
    • 压缩算法:字符串(JSON)压缩和解压【JDK之Deflater压缩与Inflater解压】
    • BCD码是什么?
    • Java二进制、八进制、十进制、十六进制转换
    • Java String字符串 与 ASCII码相互转换
    • 什么是跨域?解决方案有哪些?
    • Java 16进制字符串转10进制
    • LinkedHashMap实现LRU - 附重点源码解析
    • 去掉 if...else 的七种绝佳之法
    • 一眼看清@JSONField注解使用与效果
  • JVM

  • Spring

  • 并发编程

  • Mybatis

  • 网络编程

  • 数据库

  • 缓存

  • 设计模式

  • 分布式

  • 高并发

  • SpringBoot

  • SpringCloudAlibaba

  • Nginx

  • 面试

  • 生产问题

  • 系统设计

  • 消息中间件

  • Java
  • 基础
程序员子龙
2024-01-29

Java 模板变量替换(字符串、占位符替换)

1、org.apache.commons.text

变量默认前缀是${,后缀是}

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.12</version>
</dependency>
1
2
3
4
5
Map valuesMap = new HashMap();
valuesMap.put("code", 1234);
String templateString = "验证码:${code},您正在登录管理后台,5分钟内输入有效。";
StringSubstitutor sub = new StringSubstitutor(valuesMap);
String content= sub.replace(templateString);
System.out.println(content);
1
2
3
4
5
6

验证码:1234,您正在登录管理后台,5分钟内输入有效。

修改前缀、后缀

Map valuesMap = new HashMap();
valuesMap.put("code", 1234);
String templateString = "验证码:[code],您正在登录管理后台,5分钟内输入有效。";
StringSubstitutor sub = new StringSubstitutor(valuesMap);
//修改前缀、后缀
sub.setVariablePrefix("[");
sub.setVariableSuffix("]");
String content= sub.replace(templateString);
System.out.println(content);
1
2
3
4
5
6
7
8
9

2、org.springframework.expression


String smsTemplate = "验证码:#{[code]},您正在登录管理后台,5分钟内输入有效。";
Map<String, Object> params = new HashMap<>();
params.put("code", 12345);;

ExpressionParser parser = new SpelExpressionParser();
TemplateParserContext parserContext = new TemplateParserContext();
String content = parser.parseExpression(smsTemplate,parserContext).getValue(params, String.class);

System.out.println(content);
1
2
3
4
5
6
7
8
9
10

验证码:12345,您正在登录管理后台,5分钟内输入有效。

ExpressionParser是简单的用java编写的表达式解析器,官方文档:

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html (opens new window)

3、java.text.MessageFormat

Object[] params = new Object[]{"1234", "5"};
String msg = MessageFormat.format("验证码:{0},您正在登录管理后台,{1}分钟内输入有效。", params);
System.out.println(msg);
1
2
3

验证码:1234,您正在登录管理后台,10分钟内输入有效。

4、java.lang.String

String s = String.format("My name is %s. I am %d.", "Tom", 18);
System.out.println(s);
1
2

常用的占位符含义:

转换符 详细说明 示例
%s 字符串类型 “喜欢请收藏”
%c 字符类型 ‘m’
%b 布尔类型 true
%d 整数类型(十进制) 88
%x 整数类型(十六进制) FF
%o 整数类型(八进制) 77
%f 浮点类型 8.888
%a 十六进制浮点类型 FF.35AE
%e 指数类型 9.38e+5
%g 通用浮点类型(f和e类型中较短的) 不举例(基本用不到)
%h 散列码 不举例(基本用不到)
%% 百分比类型 %(%特殊字符%%才能显示%)
%n 换行符 不举例(基本用不到)
%tx 日期与时间类型(x代表不同的日期与时间转换符) 不举例(基本用不到)
上次更新: 2024/01/30, 15:08:57
Java 8 日期和时间 - 如何获取当前时间和时间戳?
JDK 代理

← Java 8 日期和时间 - 如何获取当前时间和时间戳? JDK 代理→

最近更新
01
保姆级教程 用DeepSeek+飞书,批量写文案、写文章,太高效了
06-06
02
还在为整理视频思维导图发愁?2 种超实用技巧,让你 10 分钟搞定,高效又省心!
06-06
03
熬夜做PPT?AI一键生成高逼格幻灯片,效率提升10倍!
06-06
更多文章>
Theme by Vdoing | Copyright © 2024-2025

    辽ICP备2023001503号-2

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式