import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringTemplateUtil {
public static final String DEF_REGEX_1 = "\\{(.+?)\\}";
public static final String DEF_REGEX_2 = "\\$\\{(.+?)\\}";
public static String render(String template, Map<String, String> data) {
return render(template, data, DEF_REGEX_1);
}
public static String render(String template, Map<String, String> data, String regex) {
if (template == null || template.trim().isEmpty()) {
return "";
}
if (regex == null || regex.trim().isEmpty()) {
return template;
}
if (data == null || data.size() == 0) {
return template;
}
try {
StringBuffer appendReplaceSb = new StringBuffer();
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(template);
while (matcher.find()) {
// String currentStr = matcher.group(0);//整个正则匹配的字符串
String key = matcher.group(1);//当前第一个子分组正则匹配的字符串
String value = data.get(key);
/*Matcher. appendReplacement:将当前匹配的子字符串替换为指定的字符串,并且将替换后的字符串
及其之前到上次匹配的子字符串之后的字符串添加到一个StringBuffer对象中。*/
matcher.appendReplacement(appendReplaceSb, value);//
}
/* Matcher. appendTail:将最后一次匹配之后的字符串添加到一个StringBuffer对象中。*/
matcher.appendTail(appendReplaceSb);
return appendReplaceSb.toString();
} catch (Exception e) {
e.printStackTrace();
}
return template;
}
}
[Javaツール]文字列プレースホルダー{xxx}、$ {xxx}ツールを置き換えます
おすすめ
転載: blog.csdn.net/qq877728715/article/details/115213236
ランキング