2013-05-22 18 views
0

我有一个包含像{0},{1} ... {n}这样的表达式的字符串。我有n个长度的字符串列表。 {0}替换为param [0],{1}替换为param [1],{n}替换为param [n]。我怎样才能做到这一点?java通过正则表达式更改包含{n}的字符串

List<String> params = new ArrayList<String>; 
param[0] = "dortmund"; 
param[1] = "5555"; 
String message = "customers address is {0}, phone number is {1}, please check them."; 
+1

如果你愿意,你可以仰望的[的String.format]实施细则(http://docs.oracle.com/javase /1.5.0/docs/api/java/lang/String.html),这似乎就是这么做的。 – 0xCAFEBABE

+0

@ 0xCAFEBABE我看到你有一些链接格式化的麻烦,你可以用'%20'替换空格,然后工作 - [某些链接](http://docs.oracle.com/javase/7/docs/api /java/lang/String.html#format(java.lang.String,%20java.lang.Object ...))。 – Dukeling

+0

@Dukeling啊,谢谢你。 – 0xCAFEBABE

回答

6

您可以使用MessageFormat

MessageFormat messageFormat = new MessageFormat("customers address is {0}, phone number is {1}, please check them."); 
Object[] args = {"dortmund", "5555"}; 
String message = messageFormat.format(args); 
+1

+1是的,使用这个类而不是**滥用正则表达式来进行简单的字符串替换**。 –

+0

它的工作原理,谢谢。 – karlkeller

-1
for (int i=0; i < params.size(); ++i) { 
    message = message.replace("{"+i+"}", params[i]); 
} 
+3

哎呀,这可能比滥用正则表达式更糟...... –

+0

'MessageFormat'是Java 1.4,它也应该被认为是“普通的老Java”。 –

+4

你应该[测试这个](https://ideone.com/N6BYow)。它不符合你的期望。您需要转义'{'和'}',因为它们是[正则表达式](http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html)字符 - '“\\ {”+ i +“\\}”' – Dukeling

相关问题