0

我正在尝试获取两个完全大写的字符串 firstName 和 lastName,并尝试将除第一个字符之外的所有字符转换为小写并连接生成的字符串。

名字="汤姆"; 姓氏=“哈里斯”;

输出是:汤姆哈里斯

我通过以下方式实现了它:

String name =
  firstName.substring(0,1).toUpperCase()
  + firstName.substring(1).toLowerCase()
  + " "
  + lastName.substring(0,1).toUpperCase()
  + lastName.substring(1).toLowerCase();

但是还有其他方法吗?更有效的方法?

4

3 回答 3

2

是的,您可以使用Apache Commons LangWordUtils.capitalizeFully()的方法:

String name = WordUtils.capitalizeFully(firstName + " " + lastName);
于 2012-08-16T07:49:16.567 回答
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*。

*连接字符串文字是在编译时完成的,因此添加" "不会创建新对象。

于 2012-08-16T08:06:17.053 回答
0

如果您在构建 Strings Snippetory时需要更多控制权可能会有所帮助

Syntaxes.XML_ALIKE.parse("{v:x case='camelizeUpper' delimiter=' '}").append("x", firstName).append("x", lastName).toString();
于 2012-08-16T08:24:23.553 回答