zoukankan      html  css  js  c++  java
  • 配置文件或模板中的占位符替换工具类.

    package com.sprucetec.tms.fee.utils;
    import java.util.HashMap;
    import java.util.Map;

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;

    /**
    * 配置文件或模板中的占位符替换工具类.
    * Created by duyinqiang on 2016/12/12.
    */

    public class PlaceholderUtils {

    private static final Logger logger = LoggerFactory.getLogger(PlaceholderUtils.class);

    /**
    * 占位符前缀: "${"
    */
    public static final String PLACEHOLDER_PREFIX = "${";
    /**
    * 占位符的后缀: "}"
    */
    public static final String PLACEHOLDER_SUFFIX = "}";

    public static String resolvePlaceholders(String text, Map<String, String> parameter) {
    if (parameter == null || parameter.isEmpty()) {
    return text;
    }
    StringBuffer buf = new StringBuffer(text);
    int startIndex = buf.indexOf(PLACEHOLDER_PREFIX);
    while (startIndex != -1) {
    int endIndex = buf.indexOf(PLACEHOLDER_SUFFIX, startIndex + PLACEHOLDER_PREFIX.length());
    if (endIndex != -1) {
    String placeholder = buf.substring(startIndex + PLACEHOLDER_PREFIX.length(), endIndex);
    int nextIndex = endIndex + PLACEHOLDER_SUFFIX.length();
    try {
    String propVal = parameter.get(placeholder);
    if (propVal != null) {
    buf.replace(startIndex, endIndex + PLACEHOLDER_SUFFIX.length(), propVal);
    nextIndex = startIndex + propVal.length();
    } else {
    logger.warn("Could not resolve placeholder '" + placeholder + "' in [" + text + "] ");
    }
    } catch (Exception ex) {
    logger.warn("Could not resolve placeholder '" + placeholder + "' in [" + text + "]: " + ex);
    }
    startIndex = buf.indexOf(PLACEHOLDER_PREFIX, nextIndex);
    } else {
    startIndex = -1;
    }
    }
    return buf.toString();
    }

    public static void main(String[] args) {
    String aa= "我们都是好孩子,${num}说是嘛? 我觉得${people}是傻蛋!";
    Map<String, String> map = new HashMap<String, String>();
    map.put("num","小二比");
    map.put("people","卫强");
    System.out.println(PlaceholderUtils.resolvePlaceholders(aa, map));
    }

    }
  • 相关阅读:
    vue简单分屏(1,4,9,16),全屏,还需要调整
    vue 中的Vuex实践
    常用工具类
    java Log日志规范
    spring中对象的注入方式
    不恰当的update语句使用主键和索引导致mysql死锁
    JPA规范及其它持久层框架
    webservice基本功能介绍
    Activiti工作流(二)之常用操作
    Activiti工作流(一)之基本操作介绍
  • 原文地址:https://www.cnblogs.com/duyinqiang/p/6206623.html
Copyright © 2011-2022 走看看