String level = "INFO";
String stamp = "2013-04-26";
String message = "Log me, please!";
String template = "[%LVL%] - %STAMP%\n%MSG%";
String log = template.replaceAll("%LVL%", level);
log = template.replaceAll("%STAMP%", stamp);
log = template.replaceAll("%MSG%", message);
System.out.println(log);
打印:
[%LVL%] - %STAMP%
Log me, please!
为什么第3个replaceAll("%MSG%", message);
有效,但前2个没有?
答案 0 :(得分:12)
它不起作用,因为您没有在其他语句中使用替换变量。您始终使用template
,因此您将始终替换原始模板变量,而不是(逐步)替换的变量。最后,您只需将原始template
替换为%MSG%
模式。
应该是:
String log = template.replaceAll("%LVL%", level);
log = log.replaceAll("%STAMP%", stamp);
log = log.replaceAll("%MSG%", message);
修改强>
正如@Fildor建议的那样,String.format()
将是一个更好的解决方案:
String.format("%s - %s\n%s", level, stamp, message);
答案 1 :(得分:2)
replaceAll
返回结果字符串但不修改原始字符串。您需要将log = log.replaceAll
用于将来的陈述。