Wie man ein Wort in einem Java-String mit der indexOf()-Methode findet

JavaBeginner
Jetzt üben

Einführung

In diesem Java-Programmier-Tutorial werden wir die indexOf()-Methode untersuchen, ein vielseitiges Werkzeug zum Auffinden von Wörtern oder Zeichen innerhalb eines Java-Strings. Die indexOf()-Methode ist essentiell für die Arbeit mit Text in Java-Anwendungen und ermöglicht es Ihnen, nach spezifischen Inhalten innerhalb größerer Strings zu suchen. Am Ende dieses Tutorials werden Sie verstehen, wie Sie diese Methode effektiv einsetzen und in verschiedenen Szenarien anwenden können, um Ihre Java-String-Verarbeitungsfähigkeiten zu verbessern.

Erstellen Ihres ersten String-Suchprogramms

In diesem Schritt erstellen wir ein einfaches Java-Programm, das demonstriert, wie man die indexOf()-Methode verwendet, um ein bestimmtes Wort innerhalb eines Strings zu finden.

Verstehen der indexOf()-Methode

Die indexOf()-Methode ist eine eingebaute Funktion in der Java-String-Klasse, die Ihnen hilft, die Position eines Substrings innerhalb eines größeren Strings zu ermitteln. Hier ist die grundlegende Syntax:

int indexOf(String str)

Diese Methode gibt den Index (die Position) des ersten Vorkommens des angegebenen Substrings zurück. Wenn der Substring nicht gefunden wird, gibt die Methode -1 zurück.

Erstellen der Java-Datei

Lassen Sie uns unser erstes Programm erstellen, um die indexOf()-Methode in Aktion zu sehen:

  1. Öffnen Sie die WebIDE in Ihrer LabEx-Umgebung.
  2. Erstellen Sie eine neue Datei, indem Sie auf das Symbol "Neue Datei" klicken oder das Menü "Datei" verwenden.
  3. Nennen Sie die Datei StringSearchDemo.java.
  4. Geben Sie den folgenden Code in die Datei ein:
public class StringSearchDemo {
    public static void main(String[] args) {
        // Create a sample sentence to search through
        String sentence = "Java programming is both fun and challenging";

        // Find the position of a word using indexOf()
        int position = sentence.indexOf("fun");

        // Display the results
        System.out.println("Original sentence: " + sentence);
        System.out.println("Searching for the word 'fun'");

        if (position != -1) {
            System.out.println("The word 'fun' was found at position: " + position);
        } else {
            System.out.println("The word 'fun' was not found in the sentence");
        }
    }
}

Kompilieren und Ausführen des Programms

Lassen Sie uns nun unser Programm kompilieren und ausführen:

  1. Öffnen Sie ein Terminal in der WebIDE (falls noch nicht geöffnet).
  2. Kompilieren Sie die Java-Datei, indem Sie Folgendes ausführen:
    javac StringSearchDemo.java
  3. Führen Sie das kompilierte Programm aus:
    java StringSearchDemo

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

Original sentence: Java programming is both fun and challenging
Searching for the word 'fun'
The word 'fun' was found at position: 25

Untersuchen des Ergebnisses

Die Ausgabe zeigt, dass unser Programm das Wort "fun" erfolgreich an Position 25 im String gefunden hat. In Java beginnen String-Indizes bei 0, also befindet sich das 26. Zeichen am Index 25.

Sie können dies überprüfen, indem Sie die Zeichen zählen: "Java programming is both " hat genau 25 Zeichen, und dann beginnt "fun".

Versuchen Sie, nach einem anderen Wort zu suchen

Ändern wir unser Programm, um nach einem anderen Wort zu suchen. Ändern Sie den Suchbegriff von "fun" zu "programming" in Ihrem Code:

int position = sentence.indexOf("programming");
System.out.println("Searching for the word 'programming'");

Kompilieren und führen Sie das Programm erneut aus:

javac StringSearchDemo.java
java StringSearchDemo

Sie sollten jetzt Folgendes sehen:

Original sentence: Java programming is both fun and challenging
Searching for the word 'programming'
The word 'programming' was found at position: 5

Das Wort "programming" beginnt an Position 5, was korrekt ist, da "Java " 5 Zeichen hat.

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:

  1. Erstellen Sie eine neue Datei mit dem Namen MultipleFinder.java.
  2. 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:

  1. Kompilieren Sie im Terminal die Java-Datei:
    javac MultipleFinder.java
  2. 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:

  1. Wir setzen die anfängliche Suchposition auf 0 (den Anfang des Strings).
  2. Wir betreten eine While-Schleife, die fortgesetzt wird, bis indexOf() -1 zurückgibt (keine weiteren Übereinstimmungen).
  3. 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.
  4. Die Schleife wird fortgesetzt, bis keine weiteren Übereinstimmungen gefunden werden.
  5. 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.

Erstellen eines einfachen Textanalysators

In diesem Schritt erstellen wir eine praktische Anwendung, die die indexOf()-Methode verwendet. Wir erstellen einen einfachen Textanalysator, der bestimmte Wörter zählen und ihre Positionen in einem größeren Text identifizieren kann.

Erstellen des Textanalysators

  1. Erstellen Sie eine neue Datei mit dem Namen TextAnalyzer.java.
  2. Geben Sie den folgenden Code ein:
import java.util.Scanner;

public class TextAnalyzer {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // Sample text to analyze
        String sampleText = "Java is one of the most popular programming languages. Java was developed " +
                          "by Sun Microsystems. Today, Java is used to develop mobile apps, web applications, " +
                          "desktop applications, games and much more. Java is known for its simplicity, " +
                          "object-oriented features, and platform independence.";

        System.out.println("Text Analyzer Program");
        System.out.println("=====================");
        System.out.println("\nText to analyze:");
        System.out.println(sampleText);

        // Prompt user for a word to search
        System.out.print("\nEnter a word to search for: ");
        String searchWord = scanner.nextLine();

        // Call methods to analyze the text
        int occurrences = countOccurrences(sampleText, searchWord);

        // Display results
        System.out.println("\nAnalysis Results:");
        System.out.println("----------------");
        System.out.println("Word searched for: \"" + searchWord + "\"");
        System.out.println("Number of occurrences: " + occurrences);

        // Show the positions if the word was found
        if (occurrences > 0) {
            System.out.println("\nPositions where \"" + searchWord + "\" appears:");
            findPositions(sampleText, searchWord);
        }

        // Calculate percentage of the text the word represents
        if (occurrences > 0) {
            // Calculate what percentage of the text this word represents
            double percentage = (double)(searchWord.length() * occurrences) / sampleText.length() * 100;
            System.out.printf("\nThe word \"%s\" makes up %.2f%% of the total text.\n",
                              searchWord, percentage);
        }

        scanner.close();
    }

    // Method to count occurrences of a word in the text
    public static int countOccurrences(String text, String word) {
        int count = 0;
        int position = 0;

        while (position != -1) {
            position = text.indexOf(word, position);

            if (position != -1) {
                count++;
                position += word.length();
            }
        }

        return count;
    }

    // Method to find and print all positions of a word
    public static void findPositions(String text, String word) {
        int position = 0;
        int occurrence = 0;

        while (position != -1) {
            position = text.indexOf(word, position);

            if (position != -1) {
                occurrence++;
                System.out.println("  Occurrence " + occurrence + ": Position " + position +
                                  " (ends at position " + (position + word.length() - 1) + ")");

                // Show the context around the word
                int contextStart = Math.max(0, position - 10);
                int contextEnd = Math.min(text.length(), position + word.length() + 10);
                String context = text.substring(contextStart, contextEnd);

                // Highlight the word in the context
                System.out.print("  Context: ");
                if (contextStart > 0) {
                    System.out.print("...");
                }

                System.out.print(context);

                if (contextEnd < text.length()) {
                    System.out.print("...");
                }
                System.out.println("\n");

                position += word.length();
            }
        }
    }
}

Kompilieren und Ausführen des Textanalysators

Lassen Sie uns nun unseren Textanalysator kompilieren und ausführen:

  1. Kompilieren Sie im Terminal die Java-Datei:

    javac TextAnalyzer.java
  2. Führen Sie das kompilierte Programm aus:

    java TextAnalyzer
  3. Geben Sie bei Aufforderung ein Wort ein, nach dem Sie suchen möchten, z. B. Java.

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

Text Analyzer Program
=====================

Text to analyze:
Java is one of the most popular programming languages. Java was developed by Sun Microsystems. Today, Java is used to develop mobile apps, web applications, desktop applications, games and much more. Java is known for its simplicity, object-oriented features, and platform independence.

Enter a word to search for: Java

Analysis Results:
----------------
Word searched for: "Java"
Number of occurrences: 4

Positions where "Java" appears:
  Occurrence 1: Position 0 (ends at position 3)
  Context: ...Java is one o...

  Occurrence 2: Position 48 (ends at position 51)
  Context: ...guages. Java was dev...

  Occurrence 3: Position 93 (ends at position 96)
  Context: ...Today, Java is used...

  Occurrence 4: Position 197 (ends at position 200)
  Context: ...more. Java is know...

The word "Java" makes up 1.67% of the total text.

Verstehen des Textanalysators

Unser Textanalysator macht Folgendes:

  1. Er zeigt einen Beispieltext zur Analyse an.
  2. Er fordert den Benutzer auf, ein Wort einzugeben, nach dem gesucht werden soll.
  3. Er zählt, wie oft das Wort im Text vorkommt.
  4. Er zeigt die Positionen an, an denen das Wort vorkommt.
  5. Für jedes Vorkommnis zeigt er den umgebenden Kontext an.
  6. Er berechnet, wie viel Prozent des Gesamttextes aus dem Suchwort bestehen.

Diese Anwendung demonstriert eine praktische Verwendung der indexOf()-Methode für die Textanalyse. Das Programm könnte erweitert werden, um weitere Funktionen einzubeziehen, wie z. B.:

  • Suche ohne Berücksichtigung der Groß-/Kleinschreibung
  • Nur ganze Wörter finden (keine Wortteile)
  • Mehrere Wörter gleichzeitig analysieren
  • Statistiken über den Text generieren

Versuchen Sie, das Programm erneut mit verschiedenen Suchwörtern auszuführen, um zu sehen, wie es mit verschiedenen Eingaben funktioniert.

Zusammenfassung

In diesem Tutorial haben Sie gelernt, wie Sie die indexOf()-Methode in Java verwenden, um Wörter innerhalb von Strings zu finden. Sie haben Folgendes gemeistert:

  1. Verwenden von indexOf(), um das erste Vorkommnis eines Wortes in einem String zu finden.
  2. Finden aller Vorkommnisse eines Wortes mithilfe einer Schleife und der zweiten Form von indexOf().
  3. Durchführen von Suchen ohne Berücksichtigung der Groß-/Kleinschreibung durch Konvertieren von Strings in Kleinbuchstaben.
  4. Erstellen einer praktischen Textanalysator-Anwendung, die reale Anwendungen der indexOf()-Methode demonstriert.

Diese Fähigkeiten zur String-Manipulation sind grundlegend in der Java-Programmierung und werden in verschiedenen Programmieraufgaben nützlich sein, einschließlich Datenverarbeitung, Benutzer-Eingabevalidierung und Textanalyse. Indem Sie verstehen, wie Sie bestimmte Teile von Strings lokalisieren und mit ihnen arbeiten, können Sie anspruchsvollere und benutzerfreundlichere Anwendungen erstellen.

Wenn Sie Ihre Java-Reise fortsetzen, können Sie diese Konzepte erweitern, indem Sie andere String-Methoden wie substring(), replace() und reguläre Ausdrücke für eine erweiterte Textverarbeitung erkunden.