我正在尝试获取两个字符串firstName和lastName,它完全是大写的,并且tring以小写形式转换除第一个字符以外的所有字符并连接结果字符串。
姓名= “TOM”; 的lastName = “HARRIS”;
输出是:汤姆哈里斯
我通过以下方式实现了目标:
String name =
firstName.substring(0,1).toUpperCase()
+ firstName.substring(1).toLowerCase()
+ " "
+ lastName.substring(0,1).toUpperCase()
+ lastName.substring(1).toLowerCase();
但还有其他办法吗?一种更有效的方式?
答案 0 :(得分:2)
是的,您可以使用Apache Commons Lang中的方法WordUtils.capitalizeFully()
:
String name = WordUtils.capitalizeFully(firstName + " " + lastName);
答案 1 :(得分:0)
由于字符串在Java中是不可变的,当进行许多连接时,使用StringBuilder会更有效,如下所示:
StringBuilder s = new StringBuilder();
String name = s.append(firstName.substring(0,1).toUpperCase())
.append(firstName.substring(1).toLowerCase())
.append(" ")
.append(lastName.substring(0,1).toUpperCase())
.append(lastName.substring(1).toLowerCase()).toString();
因为这只创建了2个对象:String和StringBuilder,而不是之前的4 *。
*在编译时连接字符串文字,因此添加" "
不会创建新对象。
答案 2 :(得分:0)
如果您需要更多控制来构建字符串Snippetory可能会有所帮助
Syntaxes.XML_ALIKE.parse("{v:x case='camelizeUpper' delimiter=' '}").append("x", firstName).append("x", lastName).toString();