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

本文介绍了Java中四种模板变量替换的方法,包括Spring ExpressionParser、Apache Commons Text、MessageFormat和String类的使用,详细讲解了如何进行字符串和占位符的替换操作,并提供了相关依赖和官方文档链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里提供了几种方法供大家选择

1、org.springframework.expression

需要引入依赖

<dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-text</artifactId>
	<version>1.8</version>
</dependency>

代码:

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

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

System.out.println(content);

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

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html

2、org.apache.commons.text

代码:

 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);

可以为变量设置默认值,格式为:${undefined.number:-1234567890},其中 undefined.number是变量名,

:-

是分隔符,1234567890是默认值。
代码:

 Map valuesMap = new HashMap();
 //valuesMap.put("code", 1234);
 String templateString = "验证码:${code:-0000},您正在登录管理后台,5分钟内输入有效。";
 StringSubstitutor sub = new StringSubstitutor(valuesMap);
 String content= sub.replace(templateString);
System.out.println(content);

参考文档:https://commons.apache.org/proper/commons-text/javadocs/api-release/index.html

3、java.text.MessageFormat

代码:

Object[] params = new Object[]{"hello", "!"};
String msg = MessageFormat.format("{0} world {1}", params);

4、java.lang.String
代码:

String s = String.format("My name is %s. I am %d.", "Andy", 18);

常用的占位符含义:

转换符详细说明示例
%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代表不同的日期与时间转换符)不举例(基本用不到)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值