在Java语言中有没有String
替换机制,我可以用文本传递对象,当字符串出现时,它就会替换字符串。
例如,文本为:
Hello ${user.name},
Welcome to ${site.name}.
我拥有的对象是"user"
和"site"
。我想用对象中的等价值替换${}
中给出的字符串。这与我们替换速度模板中的对象相同。
发布于 2010-09-07 13:17:14
使用Apache Commons文本中的StringSubstitutor
。
https://commons.apache.org/proper/commons-text/
它会帮你做到这一点(还有它的开源……)
Map<String, String> valuesMap = new HashMap<String, String>();
valuesMap.put("animal", "quick brown fox");
valuesMap.put("target", "lazy dog");
String templateString = "The ${animal} jumped over the ${target}.";
StringSubstitutor sub = new StringSubstitutor(valuesMap);
String resolvedString = sub.replace(templateString);
发布于 2010-09-07 11:04:18
看一下java.text.MessageFormat
类,MessageFormat获取一组对象,对它们进行格式化,然后将格式化后的字符串插入到模式中的适当位置。
Object[] params = new Object[]{"hello", "!"};
String msg = MessageFormat.format("{0} world {1}", params);
发布于 2010-09-07 14:04:07
有几种表达式语言实现可以为您完成此任务,这可能比使用您自己的实现更可取,例如,请参阅JUEL和MVEL
我喜欢并且已经在至少一个项目中成功地使用了MVEL。
另请参阅JSTL/JSP EL (Expression Language) in a non JSP (standalone) context后的Stackflow
https://stackoverflow.com/questions/3655424
复制相似问题