1. Methode length(): Wie viele Zeichen enthält die Zeichenkette?
Die Methode length() gibt die Anzahl der Zeichen in der Zeichenkette zurück. Das ist nicht ganz dasselbe wie „Anzahl der Bytes“ (insbesondere wenn die Zeichenkette Emojis oder Unicode‑Zeichen enthält), aber für die meisten Aufgaben ist es genau das, was man braucht.
Verwendungsbeispiel
String name = "Alice";
int length = name.length();
System.out.println("Anzahl der Buchstaben im Namen: " + length); // 8
Wozu das gut ist
- Prüfen, ob der Benutzer eine leere Zeichenkette eingegeben hat.
- Die minimale/maximale Passwortlänge prüfen.
- Ermitteln, wie viele Zeichen bis zum Limit übrig sind (z. B. in einer SMS oder in einem Tweet).
Beispiel: Prüfung auf leere Zeichenkette
String input = "";
if (input.length() == 0)
{
System.out.println("Die Zeichenkette ist leer!");
}
Tipp: Für die Prüfung auf „Leere“ gibt es außerdem die Methode isEmpty(), aber dazu gleich mehr.
Kurzes FAQ
- Die Methode length() nimmt keine Argumente entgegen (die Klammern sind immer leer).
- Wenn die Zeichenkette nur aus Leerzeichen besteht, werden diese ebenfalls als Zeichen gezählt!
- Ist die Zeichenkette gleich null, führt der Aufruf von length() zu NullPointerException – prüfen Sie vorher auf null.
2. Methode substring(): einen Teil der Zeichenkette extrahieren
Die Methode substring() liefert einen Teilstring – man „schneidet“ ein Stück anhand der angegebenen Indizes aus.
Es gibt zwei Hauptformen des Aufrufs:
- str.substring(startIndex) – ab Position startIndex bis zum Ende der Zeichenkette.
- str.substring(startIndex, endIndex) – von Position startIndex bis endIndex (das Zeichen mit dem Index endIndex wird NICHT einbezogen).
Achtung: Die Indizes in einer Zeichenkette beginnen bei 0.
Anwendungsbeispiele
Beispiel 1: Die ersten drei Buchstaben eines Namens erhalten
String name = "Alice";
String firstThree = name.substring(0, 3); // "Vas"
System.out.println(firstThree);
Beispiel 2: Die Dateierweiterung ermitteln
String fileName = "document.pdf";
int dotIndex = fileName.indexOf(".");
String extension = fileName.substring(dotIndex + 1); // "pdf"
System.out.println(extension);
Beispiel 3: Die letzten 4 Zeichen der Zeichenkette
String cardNumber = "1234567890123456";
String lastFour = cardNumber.substring(cardNumber.length() - 4); // "3456"
System.out.println("Letzte 4 Ziffern: " + lastFour);
Besonderheiten und Feinheiten
- Ungültige Indizes (startIndex < 0, endIndex > Länge, startIndex > endIndex) führen zu StringIndexOutOfBoundsException.
- Die Methode liefert immer eine neue Zeichenkette – das Original wird nicht verändert.
- Die zweite Form (mit zwei Parametern) schließt das Zeichen mit dem Index endIndex nicht ein.
String str = "abcdef";
// Indizes: 0 1 2 3 4 5
str.substring(1, 4) → "bcd" // Zeichen mit den Indizes 1, 2, 3
substring(start, end)
3. Methode indexOf(): ein Zeichen oder einen Teilstring suchen
Die Methode indexOf() sucht die Position (den Index) des ersten Vorkommens eines angegebenen Zeichens oder Teilstrings.
- Wenn gefunden – wird der Index zurückgegeben (ab 0).
- Wenn nicht gefunden – wird -1 zurückgegeben.
Anwendungsbeispiele
Beispiel 1: Den ersten Punkt in einer E-Mail finden
String email = "john.smith@mail.com";
int dotIndex = email.indexOf('.');
System.out.println("Erster Punkt an Position: " + dotIndex); // 4
Beispiel 2: Einen Teilstring finden
String text = "Ich liebe Java!";
int index = text.indexOf("Java");
System.out.println(index); // 10
Beispiel 3: Ein Zeichen nach einer bestimmten Position finden
String s = "abracadabra";
int firstA = s.indexOf('a'); // 0
int secondA = s.indexOf('a', firstA + 1); // 3
System.out.println("Das zweite 'a' an Position: " + secondA);
Besonderheiten und Feinheiten
- Wenn Zeichen/Teilstring mehrfach vorkommen, wird der Index des ersten Vorkommens zurückgegeben.
- Für das letzte Vorkommen verwenden Sie lastIndexOf().
- Für ein einzelnes Zeichen verwenden Sie einfache Anführungszeichen: 'a'; für einen Teilstring – doppelte: "abc".
Beispiel: Dateierweiterung suchen
String fileName = "report.final.version.docx";
int lastDot = fileName.lastIndexOf('.');
String extension = fileName.substring(lastDot + 1);
System.out.println("Dateierweiterung: " + extension); // "docx"
4. Methode charAt(): ein Zeichen per Index abrufen
Die Methode charAt(index) liefert das Zeichen der Zeichenkette an diesem Index.
Anwendungsbeispiele
Beispiel 1: Ersten Buchstaben der Zeichenkette prüfen
String city = "Minsk";
char first = city.charAt(0); // 'M'
System.out.println("Erster Buchstabe: " + first);
Beispiel 2: Prüfen, ob die Zeichenkette mit einem Großbuchstaben beginnt
String word = "Java";
if (Character.isUpperCase(word.charAt(0)))
{
System.out.println("Das Wort beginnt mit einem Großbuchstaben!");
}
Beispiel 3: Alle Zeichen der Zeichenkette durchlaufen
String text = "Hallo";
for (int i = 0; i < text.length(); i++)
{
System.out.println("Zeichen #" + i + ": " + text.charAt(i));
}
Besonderheiten und Feinheiten
- Ein Index außerhalb des gültigen Bereichs (z. B. -1 oder >= Länge) führt zu StringIndexOutOfBoundsException.
- Die Methode gibt einen Wert vom Typ char zurück, keinen String.
5. Methode toCharArray(): Zeichenkette in ein Zeichenarray umwandeln
Die Methode toCharArray() – eine einfache Möglichkeit, eine Zeichenkette in ein Zeichenarray (char[]) zu konvertieren. Nützlich für zeichenweise Verarbeitung, Sortierung, Prüfungen usw.
Beispiel:
String text = "Hello";
char[] characters = text.toCharArray();
for (char c : characters)
{
System.out.println(c);
}
// Ausgabe:
// H
// e
// l
// l
// o
Wozu das gut ist:
- Zeichenverarbeitung: Arrays sind für zeichenweise Logik oft bequemer (z. B. beim Prüfen auf Anagramme).
- Kompatibilität: Manche APIs erwarten char[] als Argument.
6. Methode replace(): Teilstrings ersetzen
Die Methode replace(CharSequence target, CharSequence replacement) ersetzt alle Vorkommen des Teilstrings target durch replacement. Sie gibt eine neue Zeichenkette zurück; das Original bleibt unverändert.
Beispiel:
String sentence = "Ich liebe Programmierung in Java.";
String newSentence = sentence.replace("Java", "Java 25");
System.out.println(newSentence);
// Ausgabe: Ich liebe Programmierung in Java 25.
String email = "support@company.com";
String cleanEmail = email.replace("@", "[at]");
System.out.println(cleanEmail);
// Ausgabe: support[at]company.com
Besonderheiten und Feinheiten
- Es werden alle Vorkommen ersetzt.
- String ist unveränderlich: replace() gibt eine neue Zeichenkette zurück.
- Für komplexe Regeln verwenden Sie replaceAll() mit einem regulären Ausdruck.
7. Methoden trim() und strip(): Leerraum entfernen
Beide Methoden entfernen „unsichtbare“ Zeichen am Anfang und am Ende der Zeichenkette.
- trim() – die klassische Methode: entfernt Leerzeichen, Tabulatoren, Zeilenumbrüche und einige Steuerzeichen, jedoch nicht alle Unicode‑Leerzeichen.
- strip() – die moderne Methode: berücksichtigt alle Arten von Leerzeichen gemäß dem Unicode‑Standard. In neuen Projekten vorzuziehen.
Beispiel:
String s1 = " Hallo, Welt! ";
System.out.println(s1.trim());
// Ausgabe: "Hallo, Welt!"
String s2 = " \u2005 Java 11 \u2005 "; // \u2005 — ist ein Unicode-Leerzeichen
System.out.println("trim(): " + s2.trim());
System.out.println("strip(): " + s2.strip());
// Ausgabe:
// trim(): Java 11
// strip(): Java 11
Wozu das gut ist:
- Benutzereingaben von überflüssigen Leerzeichen bereinigen.
- Daten aus Dateien/Logs vor der Verarbeitung normalisieren.
8. Praxis: Aufgaben lösen
Aufgabe 1: Prüfung der Passwortlänge
String password = "qwerty";
if (password.length() < 8)
{
System.out.println("Passwort ist zu kurz!");
}
else
{
System.out.println("Passwort ist in Ordnung.");
}
Aufgabe 2: Vornamen aus einem vollständigen Namen extrahieren
String fullName = "John Peter Smith";
int firstSpace = fullName.indexOf(' ');
String name = fullName.substring(firstSpace + 1, fullName.indexOf(' ', firstSpace + 1));
System.out.println("Vorname: " + name); // "Ivan"
Aufgabe 3: Prüfen, ob die Zeichenkette mit einem bestimmten Buchstaben beginnt
String surname = "Smith";
if (surname.charAt(0) == 'P')
{
System.out.println("Der Nachname beginnt mit dem Buchstaben P");
}
Aufgabe 4: Die Domain aus einer E-Mail ermitteln
String email = "ivy.briggs@gmail.com";
int at = email.indexOf('@');
String domain = email.substring(at + 1);
System.out.println("Domain: " + domain); // "gmail.com"
Aufgabe 5: Alle Vorkommen des Buchstabens 'a' in einer Zeichenkette finden
String s = "abracadabra";
int pos = s.indexOf('a');
while (pos != -1)
{
System.out.println("Buchstabe 'a' gefunden an Position: " + pos);
pos = s.indexOf('a', pos + 1); // ab der zuletzt gefundenen Position weitersuchen
}
9. Häufige Fehler beim Arbeiten mit String-Methoden
Fehler Nr. 1: Index außerhalb der Zeichenkette
Sehr oft werden Indizes verwechselt und es wird auf ein nicht existentes Zeichen/Teilstring zugegriffen.
String s = "Java";
char c = s.charAt(4); // Fehler! Gültige Indizes: 0..3
String s = "Hello";
String sub = s.substring(3, 10); // Fehler! Länge der Zeichenkette ist 5
Fehler Nr. 2: Verwechslung beim Ein-/Ausschließen des Endindex
Die Methode substring(start, end) schließt das Zeichen mit dem Index start ein, aber NICHT das Zeichen mit dem Index end.
Fehler Nr. 3: Erwarten, dass indexOf bei Abwesenheit etwas anderes als -1 zurückgibt
Prüfen Sie das Ergebnis vor der Verwendung, insbesondere wenn Sie es anschließend in substring verwenden.
Fehler Nr. 4: Falscher Umgang mit leeren Zeichenketten
Wenn die Zeichenkette leer ist (""), führen Aufrufe von charAt(0) oder substring(0, 1) zu einem Fehler. Prüfen Sie zuerst die Länge.
Fehler Nr. 5: Umgang mit null-Zeichenketten
Ist die Zeichenkette gleich null, führt der Aufruf einer beliebigen Methode (length(), substring() usw.) zu NullPointerException. Prüfen Sie immer auf null, bevor Sie fortfahren.
GO TO FULL VERSION