0

完全に大文字の firstName と lastName の 2 つの文字列を取得しようとしています。最初の文字を除くすべての文字を小文字に変換し、結果の文字列を連結しようとしています。

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

はい、 ApacheCommonsLangWordUtils.capitalizeFully()のメソッドを使用できます。

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

これは、以前のように 4* ではなく、String と StringBuilder の 2 つのオブジェクトのみを作成するためです。

*文字列リテラルの連結はコンパイル時に行われるため、追加し" "ても新しいオブジェクトは作成されません。

于 2012-08-16T08:06:17.053 に答える