String
Comme tous les langages objet, JavaScript gère les chaînes de caractère par le biais des objets String et RegExp. C’est JavaScript qui sera traité ici parce que conceptuellement, ce sont des chaînes de caractère qui sont produites par les CaRScripts. Voir à cet égard le tutoriel téléchargeable en pdf au bas de cette page.
Ainsi, même lorsqu’on fait ceci
var x=2+2;
Println(x);
c’est une chaîne de caractères qui est écrite et pas un nombre ; en effet "Println" ne sait imprimer que des chaînes de caractères ! Oui mais x est un nombre et pas une chaîne de caractères (sinon on aurait "22" au lieu de "4" puisque pour les chaînes, le signe "+" représente la concaténation) ! Aussi JavaScript réalise-t-il une conversion de x en chaîne de caractères, par
x.toString();
et du point de vue de l’interpréteur rhino, le script ci-dessus est discrètement transformé en
var x=2+2;
var affichage=x.toString();
Println(affichage);
La concaténation peut se faire soit comme une opération avec le signe "+", soit comme une méthode de l’objet String, méthode dont le nom est "concat". Par exemple pour construire le mot "CaRMetal" à partir de "CaR" et "Metal", on a le choix entre les deux options suivantes :
var x="CaR"+"Metal";
var y="CaR".concat("Metal");
Pour savoir combien de caractères sont contenus dans une chaîne de caractères, on utilise sa propriété "length" :
Println("CaRMetal".length);
Pour accéder à une sous-chaîne, on donne les indices de départ et d’arrivée à la méthode "substring" de la chaîne :
var x="CaRMetal";
Println(x.substring(3,7));
À titre d’exemple, voici une implémentation itérative du test des palindromes (une fonction booléenne qui retourne "true" si le mot qu’on lui soumet est un palindrome, et "false" sinon) :
function reverse(s){
var n=s.length;//savoir jusqu'où on boucle
var chaine=new String();
for(i=n-1;i>=0;i--){//on part de la fin
caractere=s.substring(i+1,i);
chaine+=caractere;
}
return(chaine);
}
function IsPalindrome(s){//fonction booléenne
return(s==reverse(s));//un palindrome est une chaîne égale à son inverse
}
Println(IsPalindrome("abba"));
Par exemple, la fonction répondra "false" avec le mot "Laval" (pourquoi ?) et "true" avec l’expression "(11*11).toString()" (comment ?)
Commentaires