我需要解析文本,并将varibales放入其中。这样的事情:
lorem ${var} dolor sit amet consectetur adipiscing elit
结束了String var = "ipsum"
${var}
内容
最简单的方法是什么?我将使用正则表达式和匹配器。但是春天(或其他东西)可能已经有了这个功能吗?
答案 0 :(得分:3)
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);
答案 1 :(得分:0)
String
有一个内置的正则表达式包装器:String replaceAll(String regex, String replacement)
尝试:
String result = "lorem ${var} dolor sit amet consectetur adipiscing elit".replaceAll("\\$\\{var\\}", "ipsum");