Afficher les mots d'une certaine longueur
Résolu
histl4000
Messages postés
140
Statut
Membre
-
histl4000 Messages postés 140 Statut Membre -
histl4000 Messages postés 140 Statut Membre -
Bonjour,
J'aimerai afficher les mots d'une longueur de trois par exemple.
Voici la phrase exemple :
String phrase = "jess j6ess ça ca s( ! ?";
Le resultat attendu serai -> jess j6ess
J'arrive a supprimer certains mot avec ma méthode mais pas les caractères spéciaux.
texte = texte.replaceAll("\\b\\w{1,3}\\b\\s?", "");
resultat -> jess j6ess ça ( ! ?
Donc le mot "ça", "(", "!", "?" sont en trop.
Pouvez-vous m'aider ? merci
J'aimerai afficher les mots d'une longueur de trois par exemple.
Voici la phrase exemple :
String phrase = "jess j6ess ça ca s( ! ?";
Le resultat attendu serai -> jess j6ess
J'arrive a supprimer certains mot avec ma méthode mais pas les caractères spéciaux.
texte = texte.replaceAll("\\b\\w{1,3}\\b\\s?", "");
resultat -> jess j6ess ça ( ! ?
Donc le mot "ça", "(", "!", "?" sont en trop.
Pouvez-vous m'aider ? merci
4 réponses
-
Bonjour
déjà dans ton texte exemple, y'a pas de mot de longueur égale à 3, donc cherches longueur supérieure ou égale à 3?
Ensuite, tu cherches à faire l'inverse de ce que tu expliques, c'est à direJ'aimerai afficher les mots
et le code que tu montres essayes d'effacer des parties de texte.
Il me semble à la fois plus simple et plus logique à code d'extraire les mots, et de traiter l'extraction
voilà un exemple qui extrait les mots de longueur 3 ou plus, sans les espaces, ponctuation, etc...http://regexstorm.net/tester?p=%28%3f%3c%3d%5cb%29%5cw%7b3%2c%7d%28%3f%3d%5cb%29&i=jess+j6ess+%c3%a7a+ca+s%28+!+%3f123.+Coucoucoucoucocuocucoucoucou%2c
-
Bonjour,
Un exemple :
import java.util.stream.Stream; Stream.of(phrase.split(" ")) .filter(s -> s.length() >= 3) .forEach(System.out::println);
Ce qui donne :jess
j6ess -
Merci de m'avoir répondu. Oui, je me suis mal exprimé. Je voulais dire que je voulais récupérer et afficher les mots de longueur 3 ou plus.
-
Je pensais supprimer les mots < 3 puis les afficher. Par contre, je ne comprends pas très bien la solution que vous m'avez donné ? Donc en essayant le code : texte.replaceAll("(?<=\\b)\\w{3,}(?=\\b)", "");
j'ai comme résultat: ça ca s( ! ?