Ein Vorlesungsausschnitt mit einem Mentor im Rahmen des Codegym University-Kurses. Melden Sie sich für den gesamten Kurs an.


1 Strings vergleichen

Eine der häufigsten Operationen mit Zeichenfolgen ist der Vergleich. Die String-Klasse verfügt über zehn verschiedene Methoden, die zum Vergleichen eines Strings mit einem anderen String verwendet werden. Im Folgenden werfen wir einen Blick auf 8 der wichtigsten.

Methoden Beschreibung
boolean equals(String str)
Zeichenfolgen gelten als gleich, wenn alle Zeichen übereinstimmen.
boolean equalsIgnoreCase(String str)
Vergleicht Zeichenfolgen und ignoriert dabei die Groß- und Kleinschreibung von Buchstaben (ignoriert, ob es sich um Groß- oder Kleinbuchstaben handelt)
int compareTo(String str)
Vergleicht Zeichenfolgen und gibt die Anzahl übereinstimmender Zeichen vom Anfang der Zeichenfolge zurück.
public int compareToIgnoreCase(String str)
Gibt die Anzahl übereinstimmender Zeichen vom Anfang einer Zeichenfolge zurück, ignoriert die Groß-/Kleinschreibung
boolean regionMatches(int toffset, String str, int offset, int len)
Vergleicht Teile von Zeichenfolgen
boolean startsWith(String prefix)
Prüft, ob die aktuelle Zeichenfolge mit der Zeichenfolge beginntprefix
boolean endsWith(String suffix)
Prüft, ob die aktuelle Zeichenfolge mit der Zeichenfolge endetsuffix

Nehmen wir an, Sie möchten ein Programm schreiben, das den Benutzer nach einem Pfad zu einer Datei fragt und dann den Dateityp anhand seiner Erweiterung überprüft. Der Code eines solchen Programms könnte etwa so aussehen:

Code Anmerkungen
Scanner console = new Scanner(System.in);
String path = console.nextLine();

if (path.endsWith(".jpg") || path.endsWith(".jpeg"))
{
   System.out.println("This is a jpeg!");
}
else if (path.endsWith(".htm") || path.endsWith(".html"))
{
   System.out.println("This is an HTML page");
}
else if (path.endsWith(".doc") || path.endsWith(".docx"))
{
   System.out.println("This is a Word document");
}
else
{
   System.out.println("Unknown format");
}
Erstellen Sie ein ScannerObjekt.
Lesen Sie eine Zeile aus der Konsole.

Überprüfen Sie, ob die Zeichenfolge pathmit der angegebenen Zeichenfolge endet


2 Suche nach Teilzeichenfolgen

Nach dem Vergleichen von Zeichenfolgen besteht die zweitbeliebteste Operation darin, eine Zeichenfolge in einer anderen zu finden. Die String-Klasse verfügt auch hierfür über einige Methoden:

Methoden Beschreibung
int indexOf(String str)
Sucht nach der Zeichenfolge strin der aktuellen Zeichenfolge. Gibt den Index des ersten Zeichens des ersten Vorkommens zurück.
int indexOf(String str, int index)
Sucht nach der Zeichenfolge strin der aktuellen Zeichenfolge und überspringt die ersten indexZeichen. Gibt den Index des Vorkommens zurück.
int lastIndexOf(String str)
Sucht nach der Zeichenfolge strin der aktuellen Zeichenfolge, beginnend am Ende. Gibt den Index des ersten Vorkommens zurück.
int lastIndexOf(String str, int index)
Sucht strvom Ende an nach der Zeichenfolge in der aktuellen Zeichenfolge und überspringt die ersten indexZeichen.
boolean matches(String regex)
Überprüft, ob die aktuelle Zeichenfolge mit einem durch einen regulären Ausdruck angegebenen Muster übereinstimmt.

Die Methoden indexOf(String)und indexOf(String, index)werden häufig in Kombination verwendet. Mit der ersten Methode können Sie das erste Vorkommen der übergebenen Teilzeichenfolge in der aktuellen Zeichenfolge finden. Und mit der zweiten Methode können Sie das zweite, dritte usw. Vorkommen finden, indem Sie die ersten Indexzeichen überspringen.

Angenommen, wir haben eine URL wie „ https://domain.com/about/reviews “ und möchten den Domainnamen durch „ codegym.cc “ ersetzen. URLs können alle möglichen Domänennamen haben, aber wir wissen Folgendes:

  • Dem Domänennamen sind zwei Schrägstriche vorangestellt – „//“.
  • Auf den Domänennamen folgt ein einzelner Schrägstrich – „ /

So würde der Code für ein solches Programm aussehen:

Code Anmerkungen
Scanner console = new Scanner(System.in);
String path = console.nextLine();

int index = path.indexOf("//");
int index2 = path.indexOf("/", index + 2);

String first = path.substring(0, index + 2);
String last = path.substring(index2);

String result = first + "codegym.cc" + last;
System.out.println(result);
Erstellen Sie ein Scannerobjekt.
Lesen Sie eine Zeile aus der Konsole.

Erhalten Sie den Index des ersten Vorkommens der Zeichenfolge. //
Wir erhalten den Index des ersten Vorkommens der Zeichenfolge /, achten aber nur auf das Vorkommen der Zeichen //. “
Wir erhalten die Zeichenfolge vom Anfang bis zum Ende der Zeichen. //
Wir erhalten die Zeichenfolge vom Ende /bis zum Ende.

Wir verketten die Strings und die neue Domäne.

Die Methoden lastIndexOf(String)und lastIndexOf(String, index)funktionieren auf die gleiche Weise, nur dass die Suche vom Ende der Zeichenfolge bis zum Anfang durchgeführt wird.



3 Teilstrings erstellen

Ein Vorlesungsausschnitt mit einem Mentor im Rahmen des Codegym University-Kurses. Melden Sie sich für den gesamten Kurs an.


Neben dem Vergleichen von Strings und dem Finden von Teilstrings gibt es noch eine weitere sehr beliebte Aktion: das Abrufen eines Teilstrings aus einem String. Das vorherige Beispiel zeigte Ihnen tatsächlich einen substring()Methodenaufruf, der einen Teil einer Zeichenfolge zurückgab.

Hier ist eine Liste von 8 Methoden, die Teilzeichenfolgen aus der aktuellen Zeichenfolge zurückgeben:

Methoden Beschreibung
String substring(int beginIndex, int endIndex)
Gibt die durch den Indexbereich angegebene Teilzeichenfolge zurück beginIndex..endIndex.
String repeat(int count)
Wiederholt die aktuelle Zeichenfolge n-mal
String replace(char oldChar, char newChar)
Gibt eine neue Zeichenfolge zurück: Ersetzt das Zeichen oldChardurch das ZeichennewChar
String replaceFirst(String regex, String replacement)
Ersetzt die erste Teilzeichenfolge, die durch einen regulären Ausdruck angegeben wird, in der aktuellen Zeichenfolge.
public String replaceAll(String regex, String replacement)
Ersetzt alle Teilzeichenfolgen in der aktuellen Zeichenfolge, die dem regulären Ausdruck entsprechen.
String toLowerCase()
Wandelt die Zeichenfolge in Kleinbuchstaben um
String toUpperCase()
Konvertiert die Zeichenfolge in Großbuchstaben
String trim()
Entfernt alle Leerzeichen am Anfang und Ende einer Zeichenfolge

Hier ist eine Zusammenfassung der verfügbaren Methoden:

substring(int beginIndex, int endIndex)Methode

Die substringMethode gibt eine neue Zeichenfolge zurück, die aus Zeichen in der aktuellen Zeichenfolge besteht, beginnend beim Zeichen mit Index beginIndexund endend bei endIndex. Wie bei allen Intervallen in Java endIndexist das Zeichen mit Index nicht im Intervall enthalten. Beispiele:

Code Ergebnis
"Hellos".substring(0, 3);
"Hel"
"Hellos".substring(1, 4);
"ell"
"Hellos".substring(1, 6);
"ellos"
"Hellos".substring(1);
"ellos"

Wenn der endIndexParameter nicht angegeben ist (was möglich ist), wird die Teilzeichenfolge vom Zeichen bei beginIndex bis zum Ende der Zeichenfolge übernommen.

repeat(int n)Methode

Die Wiederholungsmethode wiederholt einfach die aktuelle Zeichenfolge n. Beispiel:

Code Ergebnis
"Hello".repeat(3);
"HelloHelloHello"
"Hello".repeat(2);
"HelloHello"
"Hello".repeat(1);
"Hello"
"Hello".repeat(0);
""

replace(char oldChar, char newChar)Methode

Die replace()Methode gibt einen neuen String zurück, in dem alle Zeichen oldChardurch das Zeichen ersetzt werden newChar. Die Länge der Zeichenfolge ändert sich dadurch nicht. Beispiel:

Code Ergebnis
"Programming".replace('Z', 'z');
"Programming"
"Programming".replace('g', 'd');
"Prodrammind"
"Programming".replace('a', 'e');
"Progremming"
"Programming".replace('m', 'w');
"Prograwwing"

replaceFirst()und replaceAll()Methoden

Die replaceAll()Methode ersetzt alle Vorkommen eines Teilstrings durch einen anderen. Die replaceFirst()Methode ersetzt das erste Vorkommen der übergebenen Teilzeichenfolge durch die angegebene Teilzeichenfolge. Die zu ersetzende Zeichenfolge wird durch einen regulären Ausdruck angegeben. Wir werden uns in der Java-Multithreading- Quest mit regulären Ausdrücken befassen .

Beispiele:

Code Ergebnis
"Good news everyone!".replaceAll("e.", "EX");
"Good nEXs EXEXyonEX"
"Good news everyone!".replaceAll("o.", "-o-");
"G-o-d news every-o-e!"
"Good news everyone!".replaceFirst("e.", "EX");
"Good nEXs everyone!"
"Good news everyone!".replaceFirst("o.", "-o-");
"G-o-d news everyone!"

toLowerCase() and toUpperCase()Methoden

Wir haben diese Methoden kennengelernt, als wir zum ersten Mal gelernt haben, wie man die Methoden der StringKlasse aufruft.

trim()Methode

Die trim()Methode entfernt führende und nachgestellte Leerzeichen aus einer Zeichenfolge. Berührt keine Leerzeichen, die sich innerhalb einer Zeichenfolge befinden (dh nicht am Anfang oder Ende). Beispiele:

Code Ergebnis
"     ".trim();
""
"Hello".trim();
"Hello"
" Hello\n how are you?\n   ".trim();
"Hello\n how are you?\n"
"  Password\n   \n ".trim();
"Password\n   \n"