1

我需要解析文本,并将变量放入其中。像这样的东西:

lorem ${var} dolor sit amet consectetur adipiscing elit

结束String var = "ipsum"安装${var}

最简单的方法是什么?我将使用正则表达式和匹配器。但可能是弹簧(或其他东西)已经具有此功能?

4

2 回答 2

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);
于 2012-07-01T16:35:17.457 回答
0

String有一个用于正则表达式的内置包装器:String replaceAll(String regex, String replacement)

尝试:

 String result = "lorem ${var} dolor sit amet consectetur adipiscing elit".replaceAll("\\$\\{var\\}", "ipsum");
于 2012-07-01T16:01:26.000 回答