java中两个字符串的连接,只有大写的第一个字符

时间:2012-08-16 07:47:01

标签: java string

我正在尝试获取两个字符串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();

但还有其他办法吗?一种更有效的方式?

3 个答案:

答案 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();