programmation Java (école d'ingénieur) · Chapitre 14 · Application directe du cours
Rechercher un mot
Fichiers et flux · niveau 1 (application)
Énoncé
Écrire un programme Grep qui reçoit un mot et un nom de fichier en arguments, et affiche chaque ligne du fichier qui contient ce mot (sans tenir compte des majuscules), précédée de son numéro. Il termine par le nombre de lignes trouvées. Lire le fichier ligne par ligne.
Corrigé
On met en minuscules la ligne et le mot avant de chercher avec contains.
public class Grep {
public static void main(String[] args) {
String mot = args.length > 0 ? args[0] : "la";
Path f = Path.of(args.length > 1 ? args[1] : "fable.txt");
int trouvees = 0;
try (BufferedReader in = Files.newBufferedReader(f, StandardCharsets.UTF_8)) {
String ligne;
int numero = 0;
while ((ligne = in.readLine()) != null) {
numero++;
if (ligne.toLowerCase().contains(mot.toLowerCase())) {
System.out.println(numero + ": " + ligne);
trouvees++;
}
}
} catch (IOException e) {
System.out.println("Erreur : " + e.getMessage());
return;
}
System.out.println(trouvees + " ligne(s) trouvée(s)");
}
}
Sur fable.txt, java Grep la fable.txt affiche :
1: La Cigale, ayant chanté
4: Quand la bise fut venue :
2 ligne(s) trouvée(s)
La recherche est une recherche de sous-chaîne : « la » serait aussi trouvé dans « salade ». Chercher un mot entier demanderait de découper la ligne avec split.
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.