美文网首页java
Java 模板变量替换(字符串、占位符替换)

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

作者: 昊_c3e8 | 来源:发表于2020-12-25 15:25 被阅读0次

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

    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代表不同的日期与时间转换符) 不举例(基本用不到)

    相关文章

      网友评论

        本文标题:Java 模板变量替换(字符串、占位符替换)

        本文链接:https://www.haomeiwen.com/subject/snxinktx.html