Trouver plusieurs occurrences d'un mot
Maintenant que nous comprenons les bases de l'utilisation de indexOf() pour trouver une seule occurrence d'un mot, améliorons nos compétences en apprenant à trouver toutes les occurrences d'un mot dans une chaîne.
Comprendre la seconde signature de la méthode indexOf()
La méthode indexOf() a une autre forme utile :
int indexOf(String str, int fromIndex)
Cette version vous permet de spécifier une position de départ pour la recherche. En utilisant cette forme, nous pouvons trouver toutes les occurrences d'un mot en commençant chaque nouvelle recherche là où nous nous sommes arrêtés.
Création d'un programme de recherche multiple
Créons un nouveau programme Java qui trouve toutes les occurrences d'un mot spécifique :
- Créez un nouveau fichier nommé
MultipleFinder.java
- Entrez le code suivant :
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);
}
}
Compilation et exécution du programme de recherche multiple
Maintenant, compilons et exécutons notre nouveau programme :
- Dans le terminal, compilez le fichier Java :
javac MultipleFinder.java
- Exécutez le programme compilé :
java MultipleFinder
Vous devriez voir une sortie similaire à :
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
Décomposons comment ce programme trouve toutes les occurrences :
- Nous définissons la position de recherche initiale sur 0 (le début de la chaîne)
- Nous entrons une boucle while qui continue jusqu'à ce que
indexOf() renvoie -1 (plus de correspondances)
- Pour chaque correspondance, nous :
- Affichons la position où nous avons trouvé le mot
- Mettons à jour la position de recherche pour commencer après la correspondance actuelle en ajoutant la longueur du mot recherché
- La boucle continue jusqu'à ce qu'aucune autre correspondance ne soit trouvée
- Enfin, nous affichons le nombre total d'occurrences trouvées
Gestion de la sensibilité à la casse
La méthode indexOf() est sensible à la casse par défaut. Modifions notre programme pour effectuer une recherche insensible à la casse en convertissant à la fois le texte et le terme de recherche en minuscules :
Ajoutez ces lignes à MultipleFinder.java juste après le démarrage de la méthode main :
// 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);
Compilez et exécutez le programme mis à jour :
javac MultipleFinder.java
java MultipleFinder
La sortie inclura désormais les résultats de recherche sensibles et insensibles à la casse.