Cours de Javascript 2022

Chapitre 5 - Théorie 2 : Les opérations sur les strings

Jusque maintenant, nous avons vu des notions algorithmiques qui sont sensiblement commune et les mêmes à tous les langages de programmations depuis des dizaines d'années. Ici par contre, on va attaquer quelque chose d'un peu plus poussé et évolué d'un point de vue purement du développement, mais qui, pour nous, va faciliter grandement notre code et le développement de nos futurs projets.


Un petit exemple pour commencer

Imaginez que pour une raison quelconque vous ayez besoin de récupérer une chaîne de caractère uniquement composée de minuscule. Une solution pourrait être de le résoudre purement algorithmiquement avec les notions que vous avez vu jusque là, comme suis :

let userInput = prompt("Entrez un mot, je le transformerai en minuscule")
for(let i = 0; i < userInput.length; i++;)
{
 if(userInput.charCodeAt(i) > 64 && userInput.charCodeAt(i) < 91 )
 {
  userInput.charCodeAt(i) = userInput.charCodeAt(i) + 32;
 }
}

Dans cet exemple, on va récupérer chacun des caractères qui compose notre string les uns après les autres, on va récupérer la valeur Ascii qui lui correspond, ("A" = 65, ... , "Z" = 90, "a" = 97, ... , "z" =112). Si la valeur numérique est comprise entre 65 et 90, c'est une majuscule, on la remplace donc par son équivalent avec 32 place de plus dans la table Ascii, ce qui donne la même lettre en minuscule

Et bien, même si cette méthode est totalement correcte et valide, on peut très bien faire beaucoup plus simple. En effet, il existe des fonctions "built-in", "de base", ... Qui nous permettent de faire des opérations relativement complexe sans s'embêter. Ainsi, une fonction qui s'appelle toLowerCase() existe déjà en JS, qui remplace tous les caractères majuscules en minuscule.


Retour à la théorie

En fait, il y a beaucoup d'opérations qui sont très souvent répétée ou "commune" en programmation, et pour faciliter la vie des développeurs, plutôt que de réinventer la roue à chaque fois, certains langages ont inséré, dans leur structure de base, des fonctions spécifiques pour ces actions répétitives. Ainsi, dans notre exemple, plutôt que de faire cette boucle for barbare, en soit, vous pouvez juste faire :

userInput = userInput.toLowerCase()

C'est ce qu'on appelle, faire une opération sur une string. Il en existe un paquet, et quand vous regardez notre code précédent, on a utilisé l'opération "charCodeAt()" aussi. A ne pas confondre avec le "length" qui n'est pas une opération, c'est un élément qui défini notre string, c'est une propriété de celle-ci. Une opération, ou une méthode, est une fonction, et fini par un couple de parenthèse. Par contre, attention, faire une opération sur une string ne va pas remplacer la string sur laquelle on fait l'opération. En effet, c'est une fonction, elle renvoie au programme le résultat attendu, donc il ne faut pas oublier que si on ve stocker se résultat pour le réutiliser plusieurs fois, il faut bien affecter la valeur obtenue par l'opération dans une nouvelle variable.

Si j'ai :

let userInput = "Bonjour Je suis Philip"

comme code de base, regardez bien ce qui va suivre :

alert(userInput.toLowerCase())

ceci va bien m'afficher "bonjour je suis philip", par contre si je fais :

userInput.toLowerCase();
alert(userInput);

Le résultat est toujours "Bonjour Je Suis Philip" car on a pas stocké le résultat de l'opération qu'on a fait. Si on veut stocker que le résultat il faut faire un égal à un moment

userInput=userInput.toLowerCase();
alert(userInput);

Ici on aura bien "bonjour je suis philip". Enfin, pour être sur que vous ayez compris, regardez ceci :

let userInput = "Je Suis Gentil";
let userInput2 = userInput.toLowerCase();

Que vaut userInput et userInput2 à votre avis ?

Quelques fonctions utiles...

Je ne pourrais pas toute les lister, et il sera très simple de trouver une liste complète ou celle qui vous intéresse sur internet. Par exemple si vous vouliez savoir comment transformer votre chaîne de caractère en minuscule, on aurait pu tapper sur google "js transformer string minuscule". Vous auriez trouvé votre bonheur ! Je vous conseille cela dit de toujours passer par l'anglais. En effet, il sera plus simple de trouver de la doc de qualité et vous verrez que vos réponses seront dans vos questions. En demandant à google "js string to lower case" vous serez très vite tombé sur la méthode "toLowerCase()"

Voici quand même quelques fonctions utiles pour résoudre nos exercices :

Attention, si je mets str, c'est car on a besoin d'une string particulière ou une variable pour l'utiliser, si je mets String, il faut mettre aussi String de votre côté, c'est qu'on part du type String et pas d'une str en particulier !