我需要解析文本,并将变量放入其中。像这样的东西:
lorem ${var} dolor sit amet consectetur adipiscing elit
结束String var = "ipsum"
安装${var}
最简单的方法是什么?我将使用正则表达式和匹配器。但可能是弹簧(或其他东西)已经具有此功能?
我需要解析文本,并将变量放入其中。像这样的东西:
lorem ${var} dolor sit amet consectetur adipiscing elit
结束String var = "ipsum"
安装${var}
最简单的方法是什么?我将使用正则表达式和匹配器。但可能是弹簧(或其他东西)已经具有此功能?
Java 标准类MessageFormat与您想要的比较接近,但它不处理任意占位符名称。如果需要,最好的选择确实是正则表达式。如果您不认为它们很快,我建议您在拒绝它们之前进行测量。这是一个大纲:
final Map<String, String> vars = new HashMap<String, String>();
vars.put("var", "ipsum");
final String s = "lorem ${var} dolor sit amet consectetur adipiscing elit";
final Matcher m = Pattern.compile("\\$\\{(.*?)\\}").matcher(s);
final StringBuffer b = new StringBuffer(s.length());
while (m.find()) m.appendReplacement(b, vars.get(m.group(1)));
m.appendTail(b);
System.out.println(b);
String
有一个用于正则表达式的内置包装器:String replaceAll(String regex, String replacement)
尝试:
String result = "lorem ${var} dolor sit amet consectetur adipiscing elit".replaceAll("\\$\\{var\\}", "ipsum");