Je veux découper une phrase en mot...
Exemple : Mon chien est beau.
À mettre dans un tableau.
Mon
chien
est
beau
.
Des suggestions ?
Je veux découper une phrase en mot...
Exemple : Mon chien est beau.
À mettre dans un tableau.
Mon
chien
est
beau
.
Des suggestions ?
Il nous faudrait la définition de ce qu'est un mot... Je vois que le point est considéré comme un mot, donc on ne peut pas faire simplement un split() sur les espaces.
A priori Il faut construire une List<String> puis boucler sur les caractères de la String. Tant qu'on tombe sur des lettres, on les ajoute au mot qu'on est en train de lire. Quand on tombe sur autre chose qu'une lettre, on ajoute le mot en cours dans la liste, puis on en recommence un autre.
J'ai changé le nom de mon sujet.
Je veux maintenant vérifier si une phrase entrée au clavier est valide.
Pour être valide, elle doit contenir des espaces, être formée seulement de lettre et se terminer par un point.
J'avais fais quelque chose comme ceci mais sans succès. C'est pour valider si chaque charactère est une letre....
Et sinon dans l'ensemble, est-ce correct de mettre un Tokenizer dans do while ?
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
31
32
33
34
35
36 static String validerPhrase() { String phrase = null; int nbMots; boolean valide = true; do { System.out.println("Entrer une phrase"); phrase = LireString(); StringTokenizer str = new StringTokenizer(phrase); nbMots = str.countTokens(); if(!phrase.endsWith(".")) valide = false; if (nbMots < 2) valide = false; for(int i = 0; i < phrase.length() - 1; i++) { if(Character.isLetter(phrase.charAt(i)) == false); valide = false; } } while(valide == false); return phrase; }
Vu ton énoncé, tu n'as même plus besoin de découper ta phrases en mots.
Ton problème se résout très facilement avec une expression régulière:
Je te conseille de te renseigner sur les expressions régulières:
Code : Sélectionner tout - Visualiser dans une fenêtre à part phrase.matches("(?=.* )[A-Za-z ]+\\.");
(?=.* ) sert à vérifier qu'il y a au moins un espace.
[A-Za-z ]+ sert à s'assurer que la phrase est uniquement constituée de lettres et d'espace.
\\. sert à s'assurer que la phrase ce termine par point
Merci, je ne connaissais pas ça !
Partager