27

今のところ、このコードを使用して、文字列の最初の文字を大文字にしています

String output = input.substring(0, 1).toUpperCase() + input.substring(1);

これは私には非常に汚いようです..直接またはエレガントな方法はありますか..

4

8 に答える 8

53

これはどう:

String output = Character.toUpperCase(input.charAt(0)) + input.substring(1);

外部ライブラリを使用せずにクリーンなものは考えられませんが、これは現在持っているものよりも確実に優れています。

于 2013-06-10T14:26:43.727 に答える
31

Apache Commons Lang libのStringUtilsクラスを確認する必要があります-メソッドがあります.capitalize()

ライブラリからの説明:

Character.toTitleCase(char) に従って、最初の文字をタイトル ケースに変更する文字列を大文字にします。他の文字は変更されません。

于 2013-06-10T14:26:23.507 に答える
2
String out = Character.toUpperCase(inText.charAt(0)) + inText.substring(1).toLowerCase();
于 2016-09-29T17:01:52.043 に答える
0

Java 8を使用できると仮定すると、誰も求めなかった機能的な方法がここにあります...

import java.util.Optional;
import java.util.stream.IntStream;

public class StringHelper {
    public static String capitalize(String source) {
        return Optional.ofNullable(source)
            .map(str -> IntStream.concat(
                str.codePoints().limit(1).map(Character::toUpperCase),
                str.codePoints().skip(1)))
            .map(stream -> stream.toArray())
            .map(arr -> new String(arr, 0, arr.length))
            .orElse(null);
    }
}

条件ステートメントなしで null および空の文字列のケースを処理するという点でエレガントです。

于 2016-09-29T18:44:58.130 に答える
0

ほら、ビールを持って

String foo = "suresh";
String bar = foo.toUpperCase();
if(bar.charAt[0] == 'S'){
   throw new SuccessException("bar contains 'SURESH' and has the first letter capital").
}
于 2018-04-01T07:38:15.693 に答える