栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java:${}的模板字符串替换

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java:${}的模板字符串替换

java:${}的模板字符串替换

1 前言

模板字符串中经常使用${变量名}来进行字符串的变量替换,可使用commons-text库中的工具方式实现该功能。

依赖配置如下:


    org.springframework.boot
    spring-boot-starter-parent
    2.5.4



        
            org.springframework.boot
            spring-boot-starter-web
        
        
		
			org.apache.commons
			commons-text
			1.9
		
		
        
            org.apache.commons
            commons-collections4
            4.4
        
			
		
		    org.projectlombok
		    lombok
		    1.18.22
		

2 使用

package com.xiaoxu.tool.demo;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.text.StringSubstitutor;
import org.springframework.util.StringUtils;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;


@Slf4j
public class TestReplace {

    private static final String prefix = "${";
    private static final String suffix = "}";
    
    public static String replaceVar(Map vars,String template){
        if(!StringUtils.hasLength(template)){
            log.info(String.format("调用%s方法失败,模板字符串替换失败,模板字符串不能为空",
                    Thread.currentThread().getStackTrace()[1].getMethodName()));
            return null;
        }
        if(MapUtils.isEmpty(vars)){
            log.info(String.format("调用%s方法失败,模板字符串替换失败,map不能为空",
                    Thread.currentThread().getStackTrace()[1].getMethodName()));
            return null;
        }
        List tempStrs = vars.keySet().stream().map(s -> prefix + s + suffix).
                collect(Collectors.toList());
        tempStrs.forEach(t->{
            if(!template.contains(t)){
                throw new RuntimeException(String.format("调用%s方法失败,模板字符串替换失败,map的key必须存在于模板字符串中",
                        Thread.currentThread().getStackTrace()[1].getMethodName()));
            }
        });
        StringSubstitutor stringSubstitutor = new StringSubstitutor(vars);
        return stringSubstitutor.replace(template);
    }

    public static void main(String[] args) {
        
        Map vals = new HashMap<>();
        vals.put("name","xiaoxu");
        vals.put("age","36");
        String temp = "我叫${name},今年${age}岁.";
        System.out.println(replaceVar(vals, temp));
    }
}

执行结果:

我叫xiaoxu,今年36岁.
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1040005.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号