MessageFormat.format方法实例
-
public static void main(String[] args) {
-
String a=
"aaa";
-
String b=
"bb";
-
String c=
"c";
-
StringBuilder sb =
new StringBuilder();
-
sb.append(a).append(b).append(c);
-
System.out.println(MessageFormat.format(
" {0} {1} {2} {3}", a, b,
"",sb));
-
System.out.println(MessageFormat.format(
" ''{0}'' '{1}' {2} {3}", a, b,
"",sb.toString()));
-
}
运行结果
-
aaa bb aaabbc
-
'aaa' {
1} aaabbc
MessageFormat.format是根据顺序和占位符来对应插入的,所以第一行a,b都替换输出了本身的值,第三个是个空白替换为空白不显示。sb是StringBuilder拼接后的结果
第二行如果替换后需要加上单引号,'aaa'这样的,就需要在占位符上面对应加上两个单引号,这样才能准确转化为相应。
如果加上一个单引号,结果就不会替换,最后输出是占位符本身{1},第三个还是空白。StringBuilder .toString后输出和不toString结果一样
-
String d =
null;
-
System.out.println(MessageFormat.format(
" {0}", d));
结果
null
System.out.println(MessageFormat.format(" {0}", StringUtils.defaultIfBlank(d,"结果")));
运行结果
结果
注意:1.如果最后结果想加上一个单引号,就需要在相应占位符上加上两个单引号,才能准确转换。
2.如果传入的参数为null,会自动替换为null。如果想替换为空白或者其他的字符,可以使用StringUtils.defaultIfBlank(d,"结果") 替换
3.少用StringBuilder的toString 每次调用toString方法,会重新new一个String出来。
在java.lang.String的代码中,value并不是直接指向的,而是通过系统拷贝函数进行的内存操作,
如果toString太多的话,CPU会一直忙于进行内存的分配工作,会导致机器的load过高。