25 Déc2015
Manipuler les chaines de caractères
Objectif :
Manipuler les chaines de caractères.
Travail à faire :
- Ecrire une fonction qui permet de tester si une chaîne de caractère passée en paramètre commence par une lettre majuscule ou minuscule entre 'a' et 'd'.
- Ecrire une fonction qui renvoie 'true' lorsque'une chaîne contient un seul caractère '@' sinon renvoie 'false'.
- Ecrire une fonction qui renvoie 'true' lorsque'une chaîne contient au moins un chiffre sinon renvoie 'false'.
- Ecrire une fonction qui remplace les chiffre par le caractère '*' .
- Créer un script qui va utiliser ces fonctions.
Exemple d’exécution
- On utilisera pour test le code html suivant :
<!doctype html> <html> <head> <title>Manipuler les chaines de caractères</title> <meta charset="utf-8"> <style type="text/css"> div{ border: 1px solid black; } </style> </head> <body> <div > <p contenteditable="true" id="ch1" >Bonjour</p> <button onclick="str_fisrt_letter(document.getElementById('ch1').innerHTML)">Tester</button> <p id="res1"></p> </div> <div > <p contenteditable="true" id="ch2" >monadress [AT] exelib [DOT] com</p> <button onclick="str_email(document.getElementById('ch2').innerHTML)">Tester</button> <p id="res2"></p> </div> <div > <p contenteditable="true" id="ch3" >12test</p> <button onclick="str_number(document.getElementById('ch3').innerHTML)">Tester</button> <p id="res3"></p> </div> <div > <p contenteditable="true" id="ch4" >bonjour12</p> <button onclick="str_replace(document.getElementById('ch4').innerHTML)">Tester</button> <p id="res4"></p> </div> </body>
Notecontenteditable="true" est un attribut html5 qui permet de rendre un élément éditable , utilisé dans cet exercice pour simplifier la modification de la chaîne à tester.
2. Le script contenant les 4 fonctions :
<script type="text/javascript"> function str_fisrt_letter(ch){ /*L'expression régulière qui ^[a-d] pour tester si la chaîne commence par une lettre entre a et le modificateur i pour ne pas faire de différence entre majuscules et minuscules */ var pattern =/^[a-d]/i; var res = document.getElementById("res1"); if(pattern.test(ch)){ res.innerHTML=ch+" chaîne valide commence par une lettre entre a et d "; } else { res.innerHTML=ch+" chaîne invalide "; } } function str_email(ch){ var res = document.getElementById("res2"); /*La fonction split(@) transforme la chaîne en tableau de sous chaines à partir du caractère séparateur ici '@' .Si c.lenght=1 donc la chaîne ne contient pas @ et si c.lenght>2 alors il contient plusieurs '@' */ var c =ch.split('@'); if(c.length==2){ res.innerHTML=ch+" chaîne valide : contient un seul caractère @ "; } else { res.innerHTML="chaîne invalide!"; } } function str_number(ch){ var res = document.getElementById("res3"); var pattern =/\d/; /*La fonction seach peut prendre en paramètre une expression régulière*/ if(ch.search(pattern)!=-1){ res.innerHTML=ch+" chaîne valide : contient un nombre "; } else { res.innerHTML=ch+" chaîne invalide : ne contient pas un nombre "; } } function str_replace(ch){ var res = document.getElementById("res4"); /*La fonction replace peut prendre en paramètre une expression régulière ici le modificateur g pour un recherche globale afin de remplacer tous les chiffres de la chaîne*/ ch2=ch.replace(/\d/g,"*"); res.innerHTML=ch2; } </script>