03.03 Nützliche String-Methoden

Mit Strings werden Sie viel arbeiten. Deshalb stelle ich Ihnen jetzt ein paar nützliche Methoden (zusätzlich zu den bereits bekannten length(), equals() und equalsIgnoreCase()) zur Zeichenkettenverarbeitung vor.

String#charAt

Mit der charAt Methode bekommen Sie ein Zeichen an einer bestimmten Stelle eines Strings als char. Möchten Sie z. B. das 3. Zeichen eines Strings, so kann man folgende Methode aufrufen (charAt fängt – wie Arrays – bei 0 das Zählen an):

String str = "geheim";
System.out.println(str.charAt(2));

String#contains / String#indexOf

Die Methode contains überprüft, ob ein String eine andere Zeichenkette enthält. Ist dies der Fall, so wird true zurück geliefert. indexOf überprüft prinzipiell das Selbe, nur wird hier kein true oder false zurück geliefert, sondern die Stelle, an der sich die gesuchte Zeichenkette befindet. Ist der gesuchte String nicht vorhanden, liefert indexOf den Wert -1 zurück.

String str = "geheim";
String searchString = "heim";
if (str.contains(searchString)) {
  System.out.println(str + " enthält " + searchString +
    " ab der Stelle " + str.indexOf(searchString));
}

Der Methode indexOf kann auch ein weiterer Wert übergeben werden – die Position ab wo gesucht werden soll. Dadurch lassen sich z. B. alle Positionen in einem String feststellen, an denen ein bestimmtes Zeichen vorkommt.

String pana = "Panamakanal";
int counter = 0;
for (int i = 0; i != -1;) {
  i = pana.indexOf("a", i);
  if (i != -1) {
    counter++;
    System.out.println("Ein 'a' an Stelle " + ++i);
  }
}
System.out.println("Insgesamt " + counter + " a im " + pana);

String#endsWith / String#startsWith

Diese beiden Methoden überprüfen, ob ein String mit einer bestimmten Zeichenkette beginnt oder endet. Beide Methoden arbeiten case sensitive.

Wenn etwas case sensitive ist, dann wird auf Groß- und Kleinschreibung geachtet.

String str = "Anfang vom Ende";
if (str.startsWith("Anfang")) {
  System.out.println("Der String beginnt mit dem Anfang ...");
}
if (str.endsWith("Ende")) {
  System.out.println("... und hört mit dem Ende auf.");
}

String#replace

Durch diese Funktion ist es möglich eine Zeichenkette innerhalb eines Strings durch eine Andere zu ersetzen. Der manipulierte String wird zurückgegeben.

String str = "Ersetze_alle_'_'_durch_' '";
System.out.println("Vor dem Ersetzen");
System.out.println(str);
System.out.println("Rückgabewert nach dem Ersetzen");
System.out.println(str.replace("_", " "));
System.out.println("Nochmal der alte String");
System.out.println(str);
System.out.println("Alten String ersetzen");
str = str.replace("_", " ");
System.out.println(str);

String#replaceAll

Ähnlich wie die Methode replace, mit dem Unterschied, dass ein regulärer Ausdruck übergeben wird.

String message = "Am 24.12.2345 fällt Weihnachten aus!";
System.out.println(message);
message = message.replaceAll("[0-9]", "x");
System.out.println(message);

String#substring

Hiermit können einzelne Teile aus einem String extrahiert werden. Der manipulierte String wird zurückgegeben.

String str = "Die ersten und die letzten zwei Zeichen müssen weg";
System.out.println(str.substring(2, str.length() - 2));
str = "Erster Satz. Zweiter Satz.";
int position = str.indexOf(".") + 1;
System.out.println(str.substring(0, position));

String#toLowerCase / String#toUpperCase

Mit diesen beiden Methoden kann ein String komplett in Groß- oder Kleinbuchstaben gewandelt werden. Der manipulierte String wird zurückgegeben.

String s = "Der Satzanfang und die Nomen werden groß geschrieben!";
System.out.println(s + "/" + s.toLowerCase() + "/" + s.toUpperCase());

String#split

Verteilt die Zeichenkette anhand eines regulären Ausdrucks in ein Array.

String s = „3 Männer pflücken 10 Blumen für Ihre 5 Kinder“;
String[] arr = s.split(„[0-9]“);
System.out.println(„Geteilt an jeder Ziffer:“);
for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } arr = s.split(" "); System.out.println("Geteilt an jedem Leerzeichen:"); for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); }[/sourcecode]

6 Replies to “03.03 Nützliche String-Methoden”

  1. RolandF

    Im Beispiel String#split
    fehlt bei der ersten for Schleife in der Mitte das „i“
    for (int i = 0; < arr.length; i++) {
    statt
    for (int i = 0; i < arr.length; i++) {

  2. Thomas Zenglein

    Beispiel split:

    Ich wunderte mich, dass die erste Ausgabe folgendes ist:

    Männer pflücken

    Blumen für Ihre
    Kinder
    Klar, Java trennt an jedem Vorkommen von [0-9], daher die beiden Leerzeichen.

    Für diesen Fall sollte man doch besser ‚Ziffer‘ statt ‚Zahl‘ verwenden. Ändert man hier in dem Beispiel das erste das [0-9] mit [0-9]+ (suche nach Zahlen bestehend aus mindestens einer Ziffer), so erhält man:

    Männer pflücken
    Blumen für Ihre
    Kinder
    Zu beachten ist, dass jetzt bei dieser Ausgabe die erste Leerzeile erhalten bleibt.

  3. Tokra

    Wieso ist es für Java Entwickler so Wichtig den Ausdruck „Methode“ zu benutzen und nicht den Traditionellen Begriff „Funktion“?

  4. Stefan Kiesel

    Hallo Tokra,

    in objektorientierten Programmiersprachen spricht man meistens von Methoden. Die Begriffe „Funktion“ oder „Prozedur“ stammen meist aus nicht objektorientierten Sprachen, können aber je nach Sprache unterschiedlich definiert sein. Allgemein handelt es sich meistens um eine Funktion, wenn ein Wert zurückgegeben werden kann. Je nach Programmiersprache werden die übergebenen Parameter in einer Funktion auch nicht manipuliert. Eine Prozedur hat in der Regel keinen Rückgabewert, verändert dafür aber die übergebenen Parameter.

    Grüße
    Stefan

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.