79 Stimmen

Umwandlung in Groß- und Kleinschreibung in Java

Ich möchte das erste Zeichen einer Zeichenfolge in Großbuchstaben und den Rest der Zeichen in Kleinbuchstaben umwandeln. Wie kann ich das tun?

Ejemplo:

String inputval="ABCb" OR "a123BC_DET" or "aBcd"
String outputval="Abcb" or "A123bc_det" or "Abcd"

117voto

paxdiablo Punkte 809679

Probieren Sie das mal aus:

String properCase (String inputVal) {
    // Empty strings should be returned as-is.

    if (inputVal.length() == 0) return "";

    // Strings with only one character uppercased.

    if (inputVal.length() == 1) return inputVal.toUpperCase();

    // Otherwise uppercase first letter, lowercase the rest.

    return inputVal.substring(0,1).toUpperCase()
        + inputVal.substring(1).toLowerCase();
}

Grundsätzlich werden Sonderfälle von leeren und einstelligen Zeichenketten zuerst behandelt und andernfalls zwei-plus-Zeichen-Zeichenketten korrekt behandelt. Wie in einem Kommentar erwähnt, ist der Sonderfall mit einem Zeichen für die Funktionalität nicht erforderlich, aber ich ziehe es trotzdem vor, explizit zu sein, vor allem, wenn dies zu weniger nutzlosen Aufrufen führt, wie z. B. substring, um eine leere Zeichenkette zu erhalten, diese klein zu schreiben und dann ebenfalls anzuhängen.

20voto

Madhuka Dilhan Punkte 1327
String a = "ABCD"

mit diesem

a.toLowerCase();

werden alle Buchstaben in einfache umgewandelt, "abcd"
mit diesem

a.toUpperCase()

werden alle Buchstaben in Großbuchstaben umgewandelt, "ABCD"

dieser konvertierte Anfangsbuchstabe in Großbuchstaben:

a.substring(0,1).toUpperCase()

dieses konvertierte andere Schreiben Einfach

a.substring(1).toLowerCase();

können wir die Summe dieser beiden erhalten

a.substring(0,1).toUpperCase() + a.substring(1).toLowerCase();

Ergebnis = "Abcd"

11voto

Bozho Punkte 570413

WordUtils.capitalizeFully(str) de apache commons-lang hat die exakte Semantik wie gewünscht.

8voto

Martin Punkte 6789
String inputval="ABCb";
String result = inputval.substring(0,1).toUpperCase() + inputval.substring(1).toLowerCase();

Würde "ABCb" in "Abcb" ändern

5voto

Ellen Spertus Punkte 6268

Ich halte dies für einfacher als jede frühere richtige Antwort. Ich werde auch javadoc einfügen :-)

/**
 * Converts the given string to title case, where the first
 * letter is capitalized and the rest of the string is in
 * lower case.
 * 
 * @param s a string with unknown capitalization
 * @return a title-case version of the string
 */
public static String toTitleCase(String s)
{
    if (s.isEmpty())
    {
        return s;
    }
    return s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase();
}

Zeichenketten der Länge 1 brauchen nicht als Sonderfall behandelt zu werden, da s.substring(1) gibt die leere Zeichenkette zurück, wenn s hat die Länge 1.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X