如何解析包含变量的Java属性?

Cri*_*ian 2 java properties

我正在加载一个Java属性文件,看起来像:

transfer_detail = Transfer {0} from {1} to {2} on {3}
Run Code Online (Sandbox Code Playgroud)

解析该属性后,我应该看到如下所示的String:

Transfer 200.30 from Debit Account to Credit Account on 2011/01/26
Run Code Online (Sandbox Code Playgroud)

我实现了我自己的解析器,看起来像:

// 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...);
Run Code Online (Sandbox Code Playgroud)

我一直在想的是,如果在J2SE API中有这样做的话.即使对于像这样的简单事情,我也不喜欢重新发明轮子.你知道其他更简单或更清洁的方法吗?

Joa*_*uer 8

你想用MessageFormat用于与实际值的占位符填充.


lim*_*imc 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"
}));
Run Code Online (Sandbox Code Playgroud)