zoukankan      html  css  js  c++  java
  • Apache StrSubstitutor使用方法

    Java中,对于格式化字符串,不论是String.format,还是MessageFormat,都很难用。Velocity倒是不错,可就是太重。今天给大家推荐Apache commons-lang中的StrSubstitutor。

    文档地址:https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/text/StrSubstitutor.html

    StrSubstitutor在apache的commons-lang3包中,要使用,请在pom.xml里加入如下依赖:

    1 <dependency>
    2     <groupId>org.apache.commons</groupId>
    3     <artifactId>commons-lang3</artifactId>
    4     <version>3.4</version>
    5 </dependency>

    1、直接替换系统属性值

    StrSubstitutor.replaceSystemProperties(
        "You are running with java.version = ${java.version} and os.name = ${os.name}.");

    2、使用Map替换字符串中的占位符

    Map valuesMap = HashMap();
    valuesMap.put(
    "animal", "quick brown fox");
    valuesMap.put(
    "target", "lazy dog"); String templateString = "The ${animal} jumped over the ${target}.";
    StrSubstitutor sub
    = new StrSubstitutor(valuesMap); String resolvedString = sub.replace(templateString);

    resolvedString的结果:The quick brown fox jumped over the lazy dog.

    3、StrSubstitutor会递归地替换变量,比如:

    Map<String, Object> params = Maps.newHashMap();
    params.put("name", "${x}");
    params.put("x", "y");
    StrSubstitutor strSubstitutor
    = new StrSubstitutor(params);

    String hello2 = "${name}";
    System.out.println(strSubstitutor.replace(hello2));

    最后会输出:y

    4、有时变量内还嵌套其它变量,这个StrSubstitutor也是支持的,不过要调用下setEnableSubstitutionInVariables才可以。

    Map<String, Object> params = Maps.newHashMap();
    params.put("jre-1.8", "java-version-1.8");
    params.put("java.specification.version", "1.8");
    StrSubstitutor strSubstitutor = new StrSubstitutor(params);
               
    strSubstitutor.setEnableSubstitutionInVariables(true);
    System.out.println(strSubstitutor.replace("${jre-${java.specification.version}}"));

    输出:java-version-1.8

  • 相关阅读:
    iot 表索引dump《2》
    heap表和iot表排序规则不同
    Cannot complete the install because one or more required items could not be found.
    iot表输出按主键列排序,heap表不是
    iot 表主键存放所有数据,且按数据插入顺序排序
    iot表和heap表排序规则不同
    org.eclipse.graphiti.ui.editor.DiagramEditorInput.
    Oracle 排序规则
    perl 异步超时 打印错误
    14.6.3 Grouping DML Operations with Transactions 组DML操作
  • 原文地址:https://www.cnblogs.com/ahhuiyang/p/6809598.html
Copyright © 2011-2022 走看看