Commons StringSubstitutor对模板占位符进行赋值

简介: Commons StringSubstitutor对模板占位符进行赋值

pom.xml里加入如下依赖:

<dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-text</artifactId>
            <version>1.8</version>
        </dependency>
public class Placeholder {
    public static void main(String[] args) {
        // 短信模板
        String template = "${userName}您好,欢迎使用${system},您的验证码是:${code},若非本人操作,请忽略!";
        // 占位符对应的值
        Map<String,String> valueMap = new HashMap<>();
        valueMap.put("userName","阿杰");
        valueMap.put("system","查询系统");
        valueMap.put("code","666666");
        StringSubstitutor sub = new StringSubstitutor(valueMap);
        String replace = sub.replace(template);
        System.out.println(replace); // 阿杰您好,欢迎使用查询系统,您的验证码是:666666,若非本人操作,请忽略!
    }
}

自定义占位符的前后缀

public class Placeholder {
    public static void main(String[] args) {
        // 短信模板
        String template = "#userName#您好,欢迎使用#system#,您的验证码是:#code#,若非本人操作,请忽略!";
        // 占位符对应的值
        Map<String,String> valueMap = new HashMap<>();
        valueMap.put("userName","阿杰");
        valueMap.put("system","查询系统");
        valueMap.put("code","666666");
        // 构造方法  StringSubstitutor(Map<String, V> valueMap, String prefix, String suffix)
        StringSubstitutor sub = new StringSubstitutor(valueMap,"#","#");
        String replace = sub.replace(template);
        System.out.println(replace); // 阿杰您好,欢迎使用查询系统,您的验证码是:666666,若非本人操作,请忽略!
    }
}
public class Placeholder {
    public static void main(String[] args) {
        // 短信模板
        String template = "#userName#您好,欢迎使用#system#,您的验证码是:#code#,若非本人操作,请忽略!";
        // 占位符对应的值
        Map<String,String> valueMap = new HashMap<>();
        valueMap.put("userName","阿杰");
        valueMap.put("system","查询系统");
        valueMap.put("code","666666");
        StringSubstitutor sub = new StringSubstitutor();
        // 使用静态方法传入自定义的占位符前后缀
        String replace = sub.replace(template,valueMap,"#","#");
        System.out.println(replace); // 阿杰您好,欢迎使用查询系统,您的验证码是:666666,若非本人操作,请忽略!
    }
}



目录
相关文章
|
10月前
|
存储 人工智能 自然语言处理
无影AgentBay来了!给AI智能体装上“超级大脑”
阿里云在WAIC上发布专为AI Agents打造的“超级大脑”——无影AgentBay。该云端电脑支持多系统切换,集成视觉理解、自然语言控制等多项AI能力,提供高性能算力与企业级安全保障,助力AI开发者高效构建智能应用。
760 1
无影AgentBay来了!给AI智能体装上“超级大脑”
|
12月前
|
存储 安全 数据处理
【HarmonyOS Next之旅】HarmonyOS开发基础知识(三)
随着移动终端及其相关业务(如移动支付、终端云等)的普及,用户隐私保护的重要性愈发突出。应用开发者在产品设计阶段就需要考虑用户隐私的保护,提高应用的安全性。HarmonyOS应用开发需要遵从隐私保护规则,在应用上架应用市场时,应用市场会根据规则进行校验,如不满足条件则无法上架。应用采集个人数据时,应清晰、明确地告知用户,并确保告知用户的个人信息将被如何使用。对个人数据处理必须要征得用户的同意或遵守适用的法律法规,用户对其个人数据要有充分的控制权。应用个人数据收集应与数据处理目的相关,且是适当、必要的。开发者应
274 7
【HarmonyOS Next之旅】HarmonyOS开发基础知识(三)
|
JSON 前端开发 Java
如何封装接口返回结构?
本文详细探讨了API接口返回结构统一化的必要性及其带来的优势,如降低开发的心智负担、减少前端开发难度和提高代码可维护性等。同时也分析了其潜在的缺点,例如灵活性降低和开发成本增加等问题。文章进一步讨论了在Spring Boot中实现统一接口返回结构的具体方法和技术细节,包括如何处理HTTP状态码、返回单个字符串的情况以及如何封装无返回值的接口等。此外,还介绍了如何利用Spring Boot的`ResponseBodyAdvice`和`@RestControllerAdvice`等特性来自动包装控制器方法的返回值及异常处理,以达到更加一致和标准化的接口响应结构。
430 3
如何封装接口返回结构?
|
机器学习/深度学习 编解码 计算机视觉
RT-DETR改进策略【Backbone/主干网络】| 2023 U-Net V2 替换骨干网络,加强细节特征的提取和融合
RT-DETR改进策略【Backbone/主干网络】| 2023 U-Net V2 替换骨干网络,加强细节特征的提取和融合
770 10
RT-DETR改进策略【Backbone/主干网络】| 2023 U-Net V2 替换骨干网络,加强细节特征的提取和融合
|
算法 数据挖掘 调度
【调度算法】NSGA III(1)
【调度算法】NSGA III
2623 0
|
前端开发 JavaScript 算法
前端(七)——React框架的定位与应用场景解析
前端(七)——React框架的定位与应用场景解析
1428 0
|
XML SQL 自然语言处理
JDK 21中的字符串模板:提升代码可读性与维护性的新利器
本文将介绍JDK 21中引入的字符串模板特性,它是一种创新的文本生成技术,旨在提高代码的可读性和维护性。字符串模板允许开发者使用简洁的语法来构建复杂的字符串,减少了硬编码和字符串拼接的工作量。本文将详细阐述字符串模板的语法、使用场景以及与传统字符串处理方法的比较,并通过示例代码展示其在实际开发中的应用。
|
SQL Java 关系型数据库
SpringBoot整合MybatisPlus基本的增删改查,保姆级教程
SpringBoot整合MybatisPlus基本的增删改查,保姆级教程
884 0
|
域名解析 Docker 容器
使用docker+ddns 实现动态域名解析
使用docker+ddns 实现动态域名解析
3084 8
|
监控 安全 Java
【多线程学习】深入探究阻塞队列与生产者消费者模型和线程池常见面试题
【多线程学习】深入探究阻塞队列与生产者消费者模型和线程池常见面试题
430 1