HOWTO · Java

Groß- und Kleinschreibung in Java ignorieren

Dieser Artikel stellt vor, wie man Groß- und Kleinschreibung in Java ignoriert.

Auf dieser Seite

Um zu prüfen, ob zwei Java-Strings unabhängig von der Groß- und Kleinschreibung gleich sind, rufen Sie equalsIgnoreCase() auf. Wenn Sie für die weitere Verarbeitung normalisierte Strings benötigen, verwenden Sie toUpperCase() oder toLowerCase() und vergleichen Sie die Ergebnisse anschließend mit equals(). Für einen Vergleich ohne Berücksichtigung der Groß- und Kleinschreibung verwenden Sie compareToIgnoreCase().

Ein Java-String ist unveränderlich. Daher geben toUpperCase() und toLowerCase() einen String mit dem umgewandelten Inhalt zurück, während der ursprüngliche Wert unverändert bleibt. Diese Methoden und equalsIgnoreCase() verwenden die Groß- und Kleinschreibungsregeln von Java; sie bieten kein vollständiges sprachspezifisches Unicode-Case-Folding. Wählen Sie die Methode danach aus, ob Sie Gleichheit, normalisierte Werte oder eine Sortierreihenfolge benötigen.

Groß- und Kleinschreibung mit toUpperCase() in Java ignorieren

Wandeln Sie beide Strings mit toUpperCase(Locale.ROOT) um und vergleichen Sie anschließend die Ergebnisse mit equals(). Locale.ROOT macht die Umwandlung unabhängig von der Standardspracheinstellung des Computers. Das ist nützlich für eine programmatische Normalisierung, etwa von Bezeichnern. Für gewöhnliche ASCII-Beispiele ist keine englische oder US-amerikanische Standardspracheinstellung erforderlich.

import java.util.Locale;

public class UppercaseComparison {
    public static void main(String[] args) {
        String first = "icecream";
        String second = "IceCream";

        String normalizedFirst = first.toUpperCase(Locale.ROOT);
        String normalizedSecond = second.toUpperCase(Locale.ROOT);
        boolean equalIgnoringCase = normalizedFirst.equals(normalizedSecond);

        System.out.println(equalIgnoringCase);
    }
}

Bei diesem Ansatz werden die zurückgegebenen String-Werte nach der Umwandlung verglichen. Verwenden Sie Locale.ROOT, wenn die Umwandlung einem maschinellen Vergleich dient. Für eine sprachabhängige Textverarbeitung kann ein anderer Ansatz erforderlich sein.

Groß- und Kleinschreibung mit toLowerCase() in Java ignorieren

Die Normalisierung in Kleinbuchstaben folgt demselben Muster: Wandeln Sie beide Strings mit toLowerCase(Locale.ROOT) um und vergleichen Sie sie anschließend mit equals(). Durch die explizite Locale hängen die Ergebnisse nicht von der Standardspracheinstellung des Benutzers ab. Verwenden Sie diesen Ansatz, wenn nachfolgende Verarbeitungsschritte ebenfalls die normalisierten Kleinbuchstabenwerte benötigen. Für einen direkten Gleichheitstest ist equalsIgnoreCase() einfacher.

import java.util.Locale;

public class LowercaseComparison {
    public static void main(String[] args) {
        String first = "icecream";
        String second = "IceCream";

        String normalizedFirst = first.toLowerCase(Locale.ROOT);
        String normalizedSecond = second.toLowerCase(Locale.ROOT);
        boolean equalIgnoringCase = normalizedFirst.equals(normalizedSecond);

        System.out.println(equalIgnoringCase);
    }
}

Wie bei der Umwandlung in Großbuchstaben gibt toLowerCase() einen String mit dem umgewandelten Inhalt zurück, während der ursprüngliche Wert unverändert bleibt. Die Methode ist kein Ersatz für sprachspezifisches Unicode-Case-Folding.

Groß- und Kleinschreibung mit equalsIgnoreCase() in Java ignorieren

Für einen direkten Gleichheitstest rufen Sie equalsIgnoreCase() auf einem String auf und übergeben den anderen als Argument. Die Methode gibt einen booleschen Wert zurück: true, wenn die Strings gemäß dem Vergleich von Java ohne Berücksichtigung der Groß- und Kleinschreibung gleich sind, andernfalls false. Beispielsweise ist "icecream".equalsIgnoreCase("IceCream") gleich true.

public class IgnoreCaseEquality {
    public static void main(String[] args) {
        String first = "icecream";
        String second = "IceCream";

        boolean equalIgnoringCase = first.equalsIgnoreCase(second);
        System.out.println(equalIgnoringCase);
    }
}

Der Vergleich ist nicht auf eine bestimmte Sprache oder Locale zugeschnitten und führt kein vollständiges Unicode-Case-Folding durch. Wenn eine Anwendung sprachspezifische Vergleichsregeln benötigt, sollten Sie eine dafür vorgesehene API verwenden, statt anzunehmen, dass diese Methode die Textkonventionen jeder Sprache abdeckt.

Groß- und Kleinschreibung mit compareToIgnoreCase() in Java ignorieren

Verwenden Sie compareToIgnoreCase(), wenn Sie eine lexikografische Sortierreihenfolge ohne Berücksichtigung der Groß- und Kleinschreibung benötigen, etwa beim Sortieren von Strings. Ein Ergebnis von null bedeutet, dass die Strings ohne Berücksichtigung der Groß- und Kleinschreibung als gleich verglichen werden. Ein negatives Ergebnis bedeutet, dass der erste String vor dem zweiten steht; ein positives Ergebnis bedeutet, dass er danach steht. Es ist nicht garantiert, dass der genaue Wert ungleich null der Differenz der ersten unterschiedlichen Zeichen entspricht.

public class IgnoreCaseOrdering {
    public static void main(String[] args) {
        String first = "apple";
        String second = "Banana";

        int comparison = first.compareToIgnoreCase(second);
        System.out.println(comparison < 0);
    }
}

Das Beispiel gibt einen booleschen Wert für die Sortierreihenfolge aus. Verwenden Sie stattdessen equalsIgnoreCase(), wenn Sie nur das Ergebnis eines Gleichheitstests benötigen.