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

    有时候。非常多文本存入数据库或者文件里,某些变量或者模板中会存在占位符的情况,然而每次读取,一个个去字符串.replace去替换就非常麻烦,于是写个占位符替换工具类


    详细代码:


    import java.util.HashMap;
    import java.util.Map;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    /**
     * 配置文件或模板中的占位符替换工具类
     * Date: 15-5-8
     * Time: 下午4:12
     */
    public class PlaceholderUtils {
    
    	private static final Logger logger = LoggerFactory.getLogger(PlaceholderUtils.class);
    
    	/**
    	 * Prefix for system property placeholders: "${"
    	 */
    	public static final String PLACEHOLDER_PREFIX = "${";
    	/**
    	 * Suffix for system property placeholders: "}"
    	 */
    	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));
    	}
    
    }
    


    输出结果:

    我们都是好孩子,小二比说是嘛? 我认为小明是傻蛋



  • 相关阅读:
    从语料中找出低频词-去除无用信息
    pytorch seq2seq模型示例
    An Open-Source Package for Knowledge Embedding- 知识嵌入为人机交互做支撑
    jiagu-工具使用
    多线程操作数据
    pycharm安装pytorch失败的问题
    模型区分度衡量指标-KS值
    jstree: 获得根节点,checkbox事件处理
    jquery:删除第一个子元素
    js:如何在iframe重载前执行特定动作
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6869121.html
Copyright © 2011-2022 走看看