背景
大家在开发中经常遇到拼接字符串的情况,最简单直接的方式是使用“+”号拼接字符串,但是如果拼接字符过多并且无规律时,这种方式显得很不优雅,写代码的人累,看代码的人更累。
正文
如何更优雅的去拼接字符串呢?下面讲列出三种方法,效率问题暂时没测,如果不涉及到大批量字符串拼接,大家根据喜好自己选择便可。
public static void main(String[] args) {
String name = "李三";
int age = 30;
double height = 1.75;
//方法1(支持格式丰富,对应位置参数格式需要正确对应,一般用%s字符串类型即可)
String formatStr = String.format("%s->我叫%s,今年%d岁,身高%.3f米。", "String.format",name,age,height);
System.out.println(formatStr);
//方法2(参数占位符需要指定下标,调整占位符个数以及位置比较麻烦)
String formattedText = java.text.MessageFormat.format("{0}->我叫{1},今年{2}岁,身高{3}米。", "MessageFormat.format",name,age,height);
System.out.println(formattedText);
//方法3(需要引入第三方jar包org.slf4j.slf4j-api)
//(不超过2个参数时,可以使用MessageFormatter.format()方法)
org.slf4j.helpers.FormattingTuple format = org.slf4j.helpers.MessageFormatter.arrayFormat("{}->我叫{},今年{}岁,身高{}米。", new Object[]{"MessageFormatter.arrayFormat",name,age,height});
System.out.println(format.getMessage());
}
运行结果如下:
String.format->我叫李三,今年30岁,身高1.750米。
MessageFormat.format->我叫李三,今年30岁,身高1.75米。
MessageFormatter.arrayFormat->我叫李三,今年30岁,身高1.75米。
总结
以上三种方法各有优劣,大家根据个人喜好使用即可,效率还未进行测试,如果需要考虑效率建议使用StringBuffer或Stringbuilder。大家还有其他格式化拼接字符串的方法吗?欢迎下面评论区内留言,我会更新帖子给更多人参考学习。