Bonjour,
je voudrais effectuer une recherche par mot-clés dans un texte.
Existe-t-il une classe qui me permette d'effectuer cette recherche ?
Version imprimable
Bonjour,
je voudrais effectuer une recherche par mot-clés dans un texte.
Existe-t-il une classe qui me permette d'effectuer cette recherche ?
Bah tu as la classe String qui possède quelques méthodes basiques comme indexOf(String str) qui te retourne la position du bout de texte str contenu dans ton texte, ou -1 si ton texte ne contient pas ce bout de texte. Je pourrais peut être t'aider d'avantage, mais tu es assez vague. Quelle genre de recherche veux tu faire ? Juste chercher une suite de lettre, des mots clés ?
Merci pour des explications ;)
Qu'est-ce que tu entends par "recherche par mot-clé"?
Si tu veux savoir si un texte contient un de tes mots clé, effectivement c'est "indexOf()" (ou alors "contains()" du package commons-lang de Jakarta qui offre des outils de manipulation des chaînes de caractères)
Si tu veux faire autre chose de plus compliqué (compter le nombre d'apparitions d'un mot-clé dans ton texte pour calculer un score de correspondance par exemple), dis-le nous... ce n'est pas la même chose.
merci pour vos réponses :)
ce que je cherche à faire c'est déterminer si des mots (stockés dans un fichier appelé keywords.txt par exemple) apparaissent dans un texte.
J'ai recherché et j'ai trouvé ça java.util.regex.*
j'ai essayé d'écrire une petite boucle mais ça ne fonctionne pas ...
La sortie du programme me renvoit qu'aucun des mots testé n'est dans le texte pourtant, cela devrait me renvoyer des résultats positifs !Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 public void parseContent(String KeyWordsPath) { try { BufferedReader keywords = new BufferedReader( new FileReader(KeyWordsPath)); String line = ""; while((line = keywords.readLine()) != null) { System.out.println("["+line+"]"); Pattern motif = Pattern.compile(line); Matcher mot = motif.matcher(content); boolean resultat = mot.matches(); String out = "Le motif ["+line+"]"; if(resultat) out += " a été"; else out += " n'a pas été"; out += " trouvé dans le texte"; System.out.println(out); } } catch(FileNotFoundException exc) { System.err.println("Erreur <ParseContent> : "+exc); } catch(IOException exc) { System.err.println("Erreur <ParseContent> : "+exc); }
Je vais me renseigner sur les possibilités offertes par le package commons-lang de jakarta également ;)
C'est normal... tu utilises mal les expressions régulières!
cf. le tutorial de Hugo Etiévant.
Ce n'est pas la méthode "matches()" mais "find()" que tu dois utiliser dans ton cas ;)
Et vu ce que tu veux faire, un simple "indexOf()" suffit (et sera plus rapide): pas besoin d'en venir aux expressions régulières
A lire aussi :
- Tutoriels Java : http://java.developpez.com/cours/
- Le formidable cours Java de jmdoudou : http://jmdoudoux.developpez.com/cours/developpons/java/
merci :)
en effet ça marche avec find()
Je vais voir ce tutoriel