配置檔案或者模板中的佔位符替換工具類
有時候,很多文字存入資料庫或者檔案中,某些變數或者模板中會存在佔位符的情況,然而每次讀取,一個個去字串.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));
}
}
輸出結果:
我們都是好孩子,小二比說是嘛? 我覺得小明是傻蛋
相關文章
- SpringBoot配置檔案佔位符Spring Boot
- SpringBoot專案配置檔案佔位符Spring Boot
- 【Spring原始碼分析】.properties檔案讀取及佔位符${...}替換原始碼解析Spring原始碼
- 替換SQL欄位中的換行符,回車符,空格等特殊符號SQL符號
- SSM整合之使用配置類替換xml配置檔案(2)SSMXML
- **PHP中替換換行符PHP
- 使用PHPWord對Word檔案做模板替換PHP
- puppet替換檔案中的string
- C#使用string.Format格式化字串中的佔位符替換為相應的值C#ORM字串
- sed 取消檔案中的換行符
- AIX/Linux下批量替換某類檔案中的某串字元AILinux字元
- python 小程式,替換檔案中的字串Python字串
- SCSS % 佔位符CSS
- javascript的簡單模板替換JavaScript
- 指定目錄下的所有檔案中的字串替換字串
- Java替換各種特殊字元工具類Java字元
- 使用shell指令碼替換csv檔案中的資料指令碼
- 進位制轉換的工具類
- k8s Java 專案替換 jar 中的 class 檔案K8SJavaJAR
- 替換專案中的包名
- vi 中將 Windows 文字檔案中的 ^M (回車換行)全部替換掉Windows
- 引數佔位符
- java 壓縮(解壓)檔案或者資料夾工具類Java
- ultraedit中將某字元替換為回車符字元
- C# 替換文字檔案中的某一行 (要求此檔案存在)C#
- 關於python中format佔位符中的 {!} 引數PythonORM
- 用python批量替換MD檔案中的圖片地址Python
- Linux下批量替換檔案中的字元 - sed (stream editor)Linux字元
- vim內替換檔案內容
- perl命令:批量修改替換檔案
- 替換用FTP傳到Unix上的檔案中的^M字元FTP字元
- sed 原地替換檔案時遇到的趣事
- 替換文字檔案中指定的內容
- 聊聊 SpringBoot 中的兩種佔位符:@*@ 和 ${*}Spring Boot
- 02 #### Flask模板的語法+模板的渲染(本質:替換)Flask
- 實現最簡單的模板替換
- golang fmt 格式 “佔位符”Golang
- whatsns模板檔案中如何呼叫指定類目下的內容