在Java中替换多个占位符的最快方法是什么。
例如: 我有一个带有多个占位符的字符串,每个都有一个占位符名称。
String testString = "Hello {USERNAME}! Welcome to the {WEBSITE_NAME}!";
还有一个Map,其中包含将在哪个占位符中放置什么值的地图。
Map<String, String> replacementStrings = Map.of(
"USERNAME", "My name",
"WEBSITE_NAME", "My website name"
);
用Java替换Map中所有占位符的最快方法是什么。可以一次更新所有占位符吗?
(请注意,我不能将占位符格式更改为{1},{2}等)
答案 0 :(得分:4)
您可以尝试使用StrSubstitutor(Apache Commons)
String testString = "Hello {USERNAME}! Welcome to the {WEBSITE_NAME}!";
Map<String, String> replacementStrings = Map.of(
"USERNAME", "My name",
"WEBSITE_NAME", "My website name"
);
StrSubstitutor sub = new StrSubstitutor(replacementStrings , "{", "}");
String result = sub.replace(testString );
答案 1 :(得分:0)
您可以使用以下方法进行操作:
public static String replacePlaceholderInString(String text, Map<String, String> map){
Pattern contextPattern = Pattern.compile("\\{[\\w\\.]+\\}");
Matcher m = contextPattern .matcher(text);
while(m.find()){
String currentGroup = m.group();
String currentPattern = currentGroup.replaceAll("^\\{", "").replaceAll("\\}$", "").trim();
String mapValue = map.get(currentPattern);
if (mapValue != null){
text = text.replace(currentGroup, mapValue);
}
}
return text;
}