如果有字符串 “我是{0},我来自{1},今年{2}岁。
请问怎样用String的内置方法用替换掉字符串的占位符:比如“我是中国人,我来自北京,今年22岁”。
(1)JDK 中有正好有这功能:java.text.MessageFormat
而 java.text.MessageFormat 正好用的是 {0}, {1},所以String str = MessageFormat.format("我是{0},我来自{1},今年{2}岁", "中国人", "北京", "22");
MessageFormat.format 方法从 JDK 5 开始支持变参,可以直接用逗号添加参数。
(2)String str="我是{0},我来自{1},今年{2}岁";
str = str.replace("{0}", "中国人");
str = str.replace("{1}", "北京");
str = str.replace("{2}", "22");
System.out.println(str);
(3) public static void main(String[] args){
String str="";
str=repString("我是{0},我来自{1},今年{2}岁","中国人","江苏","30");
System.out.println(str);
}
public static String repString(String str,String ... params){
for(int i=0;i
str=str.replace("{"+i+"}", params[i]==null?null:params[i]);
}
return str;
}
第3种方法是目前最常用的。
sql查询中可以使用,log日志中可以使用, 时间的转换等。
public static String convertyyyyMMdd(String datestr){
return datestr.replaceAll("(\\d{4})-(\\d{2})-(\\d{2})","$1$2$3");
}
public static String convertyyyy_MM_dd(String datestr){ return datestr.replaceAll("(\\d{4})(\\d{2})(\\d{2})","$1-$2-$3"); }