Salut,
J'aimerais savoir comment faire pour n'afficher que le premier mot d'une phrase.
Merci.
Salut,
J'aimerais savoir comment faire pour n'afficher que le premier mot d'une phrase.
Merci.
Pourquoi vouloir ré-inventer la roue...
...Surtout si c'est pour la faire carrée...
ben tu fais une expression reguliere
et tu mets la partie correspondant au 1er mot entre parentheses (dans l'expression reguliere), et tu le recuperes avec $1.
ca a repondu a ta question?
Une solution relativement sûre et efficace consiste à découper la phrase en morceau qui ne sont que des mots et à prendre le premier d'entre eux.
Ainsi, le découpage se fait au moyen de la fonction split et l'expression de découpage est la négation de "Tout ce qui est un mot" ([[:word:]], en négation donc [^[:word:]]), ce qui regroupe les séparateurs, blancs et tabulations, les sauts de ligne, les signes de ponctuation, les apostrophes, etc.
Le retour du split est une liste de mots dont il suffit d'indexer le premier (de rang 0) en forçant le contexte de liste avec des parenthèses autour de l'appel.
Voici un exemple :Il existe, bien sûr, d'autres possibilités.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $ch="Quel est le premier mot d'une phrase ?"; $mot=(split (/[^[:word:]]/, $ch))[0]; print "$mot\n";
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
En particulier, pour éviter le problème des champs vides si ta ligne commence par plusieurs espaces :
\b détecte les "limites" de mot (passage d'un caractère non-mot à un caractère mot, ou carrément au début ou à la fin d'une string), \w est équivalent à [[:word:]].
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 my $sentence =" Quel est le premier mot d'une phrase ?"; my ($word) = ($sentence =~ m/\b(\w+)\b/); print "$word\n";
Attention, avec ma solution comme avec celle de 2Eurocents, je te conseille de mettre "use locale;" avant de l'utiliser, de façon que \w (ou [:word:]]) matche aussi les caractères accentués.
--
Jedaï
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager