我正在加载一个Java属性文件,如下所示:
transfer_detail = Transfer {0} from {1} to {2} on {3}
解析该属性后,我应该看到如下的字符串:
Transfer 200.30 from Debit Account to Credit Account on 2011/01/26
我实现了一个自我解析器,看起来像:
// simplified for brevity
private static String translate(String string, String... replacements){
String result = string;
for(int i = 0; i < replacements.length; i++){
result = result.replace("{"+i+"}", replacements[i]);
}
return result;
}
// and I use it this way:
String result = translate("transaction", "200.30", "Debit Account", etc...);
我一直在想的是,如果在J2SE API中有这样做的话。即使对于像这样的简单事情,我也不喜欢重新发明轮子。你知道其他更简单或更清洁的方法吗?
答案 0 :(得分:8)
您希望使用the MessageFormat
class来填充具有实际值的占位符。
答案 1 :(得分:5)
不要这样做......很难过。 :)
改为使用MessageFormat。
MessageFormat form = new MessageFormat("Transfer {0} from {1} to {2} on {3}");
System.out.println(form.format(new String[] {
"200.30",
"Debit Account",
"Credit Account",
"2011/01/26"
}));
答案 2 :(得分:0)
API MessageFormat不适用于包含引号的邮件。
例如,您必须使用正则表达式手动完成工作。