Konvertieren Sie eine Zeichenfolge in Groß- und Kleinschreibung

1. Einleitung

In diesem kurzen Tutorial zeigen wir Ihnen, wie Sie einen String in Java in das Titelformat konvertieren .

Wir zeigen verschiedene Möglichkeiten zum Implementieren einer benutzerdefinierten Methode und zeigen, wie dies mithilfe von Bibliotheken von Drittanbietern durchgeführt wird.

2. Java-Kernlösungen

2.1. Iterieren Durch die String Charaktere

Eine Möglichkeit , einen konvertieren String zu Titel Fall ist durch das Iterieren durch alle Zeichen des String .

Wenn wir dazu ein Worttrennzeichen finden, schreiben wir das nächste Zeichen groß. Danach ändern wir den Rest der Zeichen in Kleinbuchstaben, bis wir das nächste Worttrennzeichen erreichen.

Verwenden wir einen Leerraum als Worttrennzeichen und implementieren diese Lösung:

public static String convertToTitleCaseIteratingChars(String text) { if (text == null || text.isEmpty()) { return text; } StringBuilder converted = new StringBuilder(); boolean convertNext = true; for (char ch : text.toCharArray()) { if (Character.isSpaceChar(ch)) { convertNext = true; } else if (convertNext) { ch = Character.toTitleCase(ch); convertNext = false; } else { ch = Character.toLowerCase(ch); } converted.append(ch); } return converted.toString(); }

Wie wir sehen können, verwenden wir die Methode Character.toTitleCase , um die Konvertierung durchzuführen, da sie das Titelfalläquivalent eines Zeichens in Unicode überprüft .

Wenn wir diese Methode mit diesen Eingaben testen:

tHis IS a tiTLe tHis, IS a tiTLe

Wir erhalten die folgenden erwarteten Ergebnisse:

This Is A Title This, Is A Title

2.2. In Worte teilen

Ein anderer Ansatz besteht darin, den String in Wörter aufzuteilen , jedes Wort in eine Groß- und Kleinschreibung umzuwandeln und schließlich alle Wörter mit demselben Worttrennzeichen wieder zusammenzufügen.

Lassen Sie es uns im Code sehen, indem Sie erneut den Leerraum als Worttrennzeichen und die hilfreiche Stream- API verwenden:

private static final String WORD_SEPARATOR = " "; public static String convertToTitleCaseSplitting(String text) { if (text == null || text.isEmpty()) { return text; } return Arrays .stream(text.split(WORD_SEPARATOR)) .map(word -> word.isEmpty() ? word : Character.toTitleCase(word.charAt(0)) + word .substring(1) .toLowerCase()) .collect(Collectors.joining(WORD_SEPARATOR)); }

Mit den gleichen Eingaben wie zuvor erhalten wir genau die gleichen Ausgaben:

This Is A Title This, Is A Title

3. Verwenden von Apache Commons

Falls wir keine eigene benutzerdefinierte Methode implementieren möchten, können wir die Apache Commons-Bibliothek verwenden. Das Setup für diese Bibliothek wird in diesem Artikel erläutert.

Dies stellt die WordUtils- Klasse bereit , die über die Methode capitalizeFully () verfügt , die genau das tut, was wir erreichen möchten:

public static String convertToTileCaseWordUtilsFull(String text) { return WordUtils.capitalizeFully(text); }

Wie wir sehen können, ist dies sehr einfach zu bedienen und wenn wir es mit den gleichen Eingaben wie zuvor testen, erhalten wir die gleichen Ergebnisse:

This Is A Title This, Is A Title

Außerdem bietet die WordUtils- Klasse eine andere Methode " kapitalisieren () " , die ähnlich wie " kapitalisieren" () funktioniert , außer dass nur das erste Zeichen jedes Wortes geändert wird . Dies bedeutet, dass der Rest der Zeichen nicht in Kleinbuchstaben umgewandelt wird.

Mal sehen, wie wir das nutzen können:

public static String convertToTileCaseWordUtils(String text) { return WordUtils.capitalize(text); }

Wenn wir es nun mit denselben Eingaben wie zuvor testen, erhalten wir diese verschiedenen Ausgaben:

THis IS A TiTLe THis, IS A TiTLe

4. Verwenden von ICU4J

Eine weitere Bibliothek, die wir verwenden können, ist ICU4J, die Unicode- und Globalisierungsunterstützung bietet.

Um es zu verwenden, müssen wir diese Abhängigkeit zu unserem Projekt hinzufügen:

 com.ibm.icu icu4j 61.1 

Die neueste Version finden Sie hier.

Diese Bibliothek funktioniert sehr ähnlich wie WordUtils , aber wir können einen BreakIterator angeben , um der Methode mitzuteilen, wie der String aufgeteilt werden soll und welche Wörter daher in Groß- und Kleinschreibung konvertiert werden sollen:

public static String convertToTitleCaseIcu4j(String text) { if (text == null || text.isEmpty()) { return text; } return UCharacter.toTitleCase(text, BreakIterator.getTitleInstance()); }

Wie wir sehen können, haben sie einen speziellen BreakIterator , um mit Titeln zu arbeiten. Wenn wir keinen BreakIterator angeben, werden die Standardeinstellungen von Unicode verwendet , die in diesem Fall die gleichen Ergebnisse generieren.

Beachten Sie auch, dass diese Methode können wir angeben , die Locale der String wir um konvertieren eine länderspezifische Umwandlung zu tun.

5. Schlussfolgerung

In diesem kurzen Artikel haben wir gezeigt, wie ein String in Java in das Titelfallformat konvertiert wird . Wir haben zuerst unsere benutzerdefinierten Implementierungen verwendet und danach gezeigt, wie dies mit externen Bibliotheken gemacht wird.

Wie immer ist der vollständige Quellcode der Beispiele auf GitHub verfügbar.