Finden mehrerer Vorkommnisse eines Wortes
Nachdem wir die Grundlagen der Verwendung von indexOf() zum Finden eines einzelnen Vorkommnisses eines Wortes verstanden haben, wollen wir unsere Fähigkeiten erweitern, indem wir lernen, wie man alle Vorkommnisse eines Wortes in einem String findet.
Verstehen der zweiten indexOf()-Methodensignatur
Die indexOf()-Methode hat eine weitere nützliche Form:
int indexOf(String str, int fromIndex)
Diese Version ermöglicht es Ihnen, eine Startposition für die Suche anzugeben. Durch die Verwendung dieser Form können wir alle Vorkommnisse eines Wortes finden, indem wir jede neue Suche von dort aus starten, wo wir aufgehört haben.
Erstellen eines Programms für die Mehrfachsuche
Lassen Sie uns ein neues Java-Programm erstellen, das alle Vorkommnisse eines bestimmten Wortes findet:
- Erstellen Sie eine neue Datei mit dem Namen
MultipleFinder.java.
- Geben Sie den folgenden Code ein:
public class MultipleFinder {
public static void main(String[] args) {
// Create a sample text with multiple occurrences of a word
String paragraph = "Java is a popular programming language. Java runs on various platforms. " +
"Java is used for developing web applications, mobile apps, and more. " +
"Learning Java is essential for many software development roles.";
System.out.println("Original text:");
System.out.println(paragraph);
System.out.println("\nSearching for all occurrences of 'Java':");
// Find all occurrences of "Java"
String searchWord = "Java";
int position = 0;
int count = 0;
// Loop until no more occurrences are found
while (position != -1) {
position = paragraph.indexOf(searchWord, position);
if (position != -1) {
count++;
System.out.println("Occurrence " + count + " found at position: " + position);
// Move past this occurrence to find the next one
position += searchWord.length();
}
}
System.out.println("\nTotal occurrences found: " + count);
}
}
Kompilieren und Ausführen des Mehrfachsuchprogramms
Lassen Sie uns nun unser neues Programm kompilieren und ausführen:
- Kompilieren Sie im Terminal die Java-Datei:
javac MultipleFinder.java
- Führen Sie das kompilierte Programm aus:
java MultipleFinder
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
Original text:
Java is a popular programming language. Java runs on various platforms. Java is used for developing web applications, mobile apps, and more. Learning Java is essential for many software development roles.
Searching for all occurrences of 'Java':
Occurrence 1 found at position: 0
Occurrence 2 found at position: 42
Occurrence 3 found at position: 72
Occurrence 4 found at position: 149
Total occurrences found: 4
So funktioniert das Programm
Lassen Sie uns aufschlüsseln, wie dieses Programm alle Vorkommnisse findet:
- Wir setzen die anfängliche Suchposition auf 0 (den Anfang des Strings).
- Wir betreten eine While-Schleife, die fortgesetzt wird, bis
indexOf() -1 zurückgibt (keine weiteren Übereinstimmungen).
- Für jede Übereinstimmung tun wir Folgendes:
- Geben Sie die Position aus, an der wir das Wort gefunden haben.
- Aktualisieren Sie die Suchposition, um nach der aktuellen Übereinstimmung zu beginnen, indem Sie die Länge des Suchwortes hinzufügen.
- Die Schleife wird fortgesetzt, bis keine weiteren Übereinstimmungen gefunden werden.
- Schließlich geben wir die Gesamtzahl der gefundenen Vorkommnisse aus.
Umgang mit Groß-/Kleinschreibung
Die indexOf()-Methode ist standardmäßig case-sensitive (Groß-/Kleinschreibung wird beachtet). Ändern wir unser Programm, um eine Suche ohne Berücksichtigung der Groß-/Kleinschreibung durchzuführen, indem wir sowohl den Text als auch den Suchbegriff in Kleinbuchstaben umwandeln:
Fügen Sie diese Zeilen zu MultipleFinder.java direkt nach dem Start der Hauptmethode hinzu:
// Case-insensitive search demonstration
System.out.println("\n--- Case-insensitive search ---");
String lowercaseParagraph = paragraph.toLowerCase();
String lowercaseSearchWord = searchWord.toLowerCase();
position = 0;
count = 0;
while (position != -1) {
position = lowercaseParagraph.indexOf(lowercaseSearchWord, position);
if (position != -1) {
count++;
System.out.println("Occurrence " + count + " found at position: " + position);
position += lowercaseSearchWord.length();
}
}
System.out.println("\nTotal occurrences found (case-insensitive): " + count);
Kompilieren und führen Sie das aktualisierte Programm aus:
javac MultipleFinder.java
java MultipleFinder
Die Ausgabe enthält nun sowohl Ergebnisse der Suche mit als auch ohne Berücksichtigung der Groß-/Kleinschreibung.