我有以下模板 String: "Hello [Name] Please find attached [Invoice Number] which is due on [Due Date]"
。
我也有字符串变量的名称,发票号码和到期日-什么是最好的方式来替换模板中的标记与变量?
(注意,如果一个变量恰好包含一个标记,它不应该被替换)。
剪辑
感谢@laginimaineb 和@alan-moore,我的解决办法是:
public static String replaceTokens(String text,
Map<String, String> replacements) {
Pattern pattern = Pattern.compile("\\[(.+?)\\]");
Matcher matcher = pattern.matcher(text);
StringBuffer buffer = new StringBuffer();
while (matcher.find()) {
String replacement = replacements.get(matcher.group(1));
if (replacement != null) {
// matcher.appendReplacement(buffer, replacement);
// see comment
matcher.appendReplacement(buffer, "");
buffer.append(replacement);
}
}
matcher.appendTail(buffer);
return buffer.toString();
}