Analyser une phrase
Un texte n'est pas qu'une suite de lettres : c'est aussi une suite de mots. En découpant une phrase, on peut la compter, la trier, la transformer. Voyons les techniques de base de l'analyse de texte.
Compter
phrase est un texte vaut 'Le petit hibou regarde la lune'
affiche longueur(phrase) + ' caractères'
affiche compter_mots(phrase) + ' mots'
affiche compter(phrase, 'e') + ' fois la lettre e'
longueur compte tous les caractères, espaces compris ;compter_mots compte les mots ;compter(texte, motif) compte les apparitions d'un morceau de texte.
Découper en mots
decouper(texte, séparateur) coupe le texte à chaque séparateur et renvoie un tableau. Avec une espace comme séparateur, on obtient les mots :
phrase est un texte vaut 'Le petit hibou regarde la lune'
mots est un tableau
mots vaut decouper(phrase, ' ')
pour i de 0 à longueur(mots) - 1
affiche (i + 1) + ' : ' + mots[i]
fin pour
Une fois la phrase dans un tableau, toutes les techniques des tableaux s'appliquent.
Question : Que contient mots[1] après mots vaut decouper('un deux trois', ' ') ? — deux. Le tableau commence à l'index 0 : mots[0] est « un », mots[1] est « deux ».
Le mot le plus long
C'est la recherche du maximum, où l'on compare les longueurs :
phrase est un texte vaut 'Le petit hibou regarde tranquillement la lune'
mots est un tableau
mots vaut decouper(phrase, ' ')
plusLong est un texte vaut mots[0]
pour i de 1 à longueur(mots) - 1
si longueur(mots[i]) > longueur(plusLong) alors
plusLong vaut mots[i]
fin si
fin pour
affiche 'Mot le plus long : ' + plusLong + ' (' + longueur(plusLong) + ' lettres)'
Fabriquer un sigle
On garde la première lettre de chaque mot, en majuscule :
nomComplet est un texte vaut 'organisation des nations unies'
mots est un tableau
mots vaut decouper(nomComplet, ' ')
sigle est un texte vaut ''
pour i de 0 à longueur(mots) - 1
si longueur(mots[i]) > 3 alors
sigle ajoute majuscules(copier(mots[i], 1, 1))
fin si
fin pour
affiche sigle // ONU
La condition longueur(mots[i]) > 3 écarte les petits mots comme « des » : c'est une astuce simple, qui marche souvent mais pas toujours.
Inverser l'ordre des mots
On parcourt le tableau à l'envers, et joindre recolle les mots :
phrase est un texte vaut 'la lune regarde le hibou'
mots est un tableau
mots vaut decouper(phrase, ' ')
envers est un tableau
pour i de longueur(mots) - 1 à 0 pas -1
envers ajoute mots[i]
fin pour
affiche joindre(envers, ' ') // hibou le regarde lune la
decouper et joindre sont deux fonctions inverses : l'une transforme un texte en tableau, l'autre un tableau en texte.
Mettre une majuscule à chaque mot
titre est un texte vaut 'le tour du monde en quatre-vingts jours'
mots est un tableau
mots vaut decouper(titre, ' ')
pour i de 0 à longueur(mots) - 1
mots[i] vaut majuscule_initiale(mots[i])
fin pour
affiche joindre(mots, ' ')
Ici, on modifie chaque case du tableau avant de le recoller.
En résumé
compter_mots, compter et longueur mesurent un texte.decouper(texte, ' ') transforme une phrase en tableau de mots.joindre(tableau, ' ') recolle un tableau en un seul texte.- Entre les deux, on applique les techniques des tableaux : maximum, parcours à l'envers, modification.