Vous êtes ici : Accueil des cours Misfu > Apprendre la programmation > Cours Javascript > L'objet String - JavaScript

Traduction de la page Strings rédigée par Peter-Paul Koch et traduite par Christophe Bruggeman

La traduction est en cours, si vous trouvez une erreur sur une page ou si vous souhaitez suggérer une amélioration, n'hésitez pas à utiliser le forum.

String

split() et toString() ne fonctionnent pas dans Netscape 2 et Internet Explorer 3.

substr() n'est pas utilisable sur Netscape 2 et 3, Explorer 3, Hotjava 3, Opera 3 et WebTV.

Sur cette page j'explique ce qu'est un string puis je donne une vue d'ensemble des choses utiles que vous pouvez faire avec.

Les string sont simplement des groupes de caractères, comme 'Javascript', 'Hello World!', 'http://www.quirksmode.org' ou encore '14'.

Quand vous écrivez du JavaScript, vous devez savoir ce qu'est un string et comment ils fonctionnent. Vous les emploierez beaucoup, puisque la plupart des choses que vous pouvez donner en lecture (l'URL d'une page, la valeur d'un champ de formulaire etc...) sont des string.

J'explique d'abord les bases des string. Puis j'explique la différence un peut troublante entre les string et les nombres dans le Javascript. Si vous avez une expérience dans un autre language de programmation, lisez cette partie soigneusement.
Pour terminer je donne quelques unes des plus importantes utilisations et propriétés des string.

Fonctionnement des string

passons en revue l'essentiel à savoir sur les string.

Citations

Quand vous déclarez et manipulez des strings dans du Javascript, Ecrivez-les toujours avec des simples quotes ' ou un guillemet " autour d'eux. Ceci permet d'indiquer au navigateur qu'il traite une chaîne de caractère (string). Ne vous mélangez pas avec les quotes, si vous commencez un string avec un simple quote et le finissez avec un guillemet, le Javascript ne comprendra pas ce que voulez lui dire. En règle générale, j'emploie des simples quotes ' parce que j'ai décidé d'employer les guillemets pour le HTML et les simples quotes pour le Javascript. Vous pouvez naturellement faire ce qui vous arrange, mais je vous conseille de respecter quelques règles pour vous-mêmes.

Introduisons nos deux strings que nous emploierons toute au long de cette page :

var a = 'Hello world!';
var b = 'I am a JavaScript hacker.'

Maintenant nous avons déclaré deux variables, a et b et mis les chaînes de caractères(string) à l'intérieur. Après avoir fait ceci, nous pouvons commencer à travailler avec. Mais tout d'abord, un problème: supposez que j'écrive

var b = 'I'm a JavaScript hacker.';

Cette chaîne de caractère contient un simple quote ' après le I, le Javascript pense donc que la chaîne de caractère est fini, et ne comprend pas ce qui vient après, il envoie alors des messages d'erreur. Ainsi vous devez utiliser un caractère d'échappement devant le simple quote, indiquant ainsi au navigateur de traiter le quote ' comme un caractère, et non pas comme une commande permettant de finir la chaîne de caractère. Faites ceci en plaçant un antislash \ devant lui :

var b = 'I\'m a JavaScript hacker.'

Notez que vous pouvez mettre des guillemets dans la chaîne de caractère sans les échapper. Après tout, vous avez défini le simple quote ' comme commencement et fin de la chaîne de caractère, ainsi

var b = 'I\'m a JavaScript "hacker".'

ne donne aucun problèmes. Les guillemets sont automatiquement traité comme des parties de la chaîne de caractère, pas comme des commandes.

Fonctions préécrites

Maintenant que vous avez défini les strings, vous pouvez commencer à les employer. Par exemple, vous pouvez ajouter un string à un autre, vous pouvez prendre le deuxième et le quatrième caractère du string b et les placer au milieu de la chaîne de caractère a, vous pouvez faire ressortir en lecture ce que contient le douzième caractère de a, et combien de caractères contient b savoir aussi s'il y a un caractère 'q' dans a et b etc...

Pour faire ceci, vous pouvez employer quelques fonctions automatiques que le Javascript assigne à chaque string. Un d'elles est .length elle permet de donner la longueur d'un string. Ainsi si vous voulez obtenir la longueur de la chaîne de caractère 'Hello word!' vous pouvez faire :

var c = 'Hello world!'.length;

Mais plus haut nous avons mis cette chaîne de caractère dans la variable a. Vous faites ainsi de a un string, ainsi avec l'argument length ceci donnera le même résultat :

var c = a.length;

Une chose importante est de savoir que vous pouvez employer .length sur n'importe qu'elle chaîne de caractère : c'est un dispositif automatique. Vous pouvez donner en lecture la longueur length de n'importe quel string, si le Javascript le fait pour vous (avec location.href ou document.title) ou vous l'avez déclaré par vous-mêmes.
Je vous donne une liste de méthodes et de propriétés automatiques ci-dessous.

String et nombres

Le Javascript n'est pas très rigide au sujet de la différence entre les strings et les nombres. Quelques langages de programmation exigent de vous de préciser si une variable est un nombre ou un string avant de faire toute autre chose avec elle, mais pas le Javascript. En fait vous pouvez même ajouter des nombres à des strings :

var c = a + 12;

Quelques langages de programmation s'arrêteraient de suite si ils rencontraient cette ligne. Après tout, a est un string et 12 est un nombre. Le Javascript, cependant, essaye de résoudre le problème en supposant 12 comme élément d'un string. Ainsi c devient

Hello world!12

Ainsi si vous employez + sur un string et un nombre, le Javascript va faire du nombre un string pour vous. Encore mieux, si le besoin s'en fait sentir, vous pouvez traiter des nombres comme strings ou strings comme nombres.

Réciproquement, si vous appliquez des mathématiques à un string, le Javascript essaye de le transformer en nombre. Si le string ne peut pas être interprété comme nombre (parce qu'il contient des lettres, par exemple), le Javascript donne NaN (Not a Number).

En conclusion, le Javascript ne fait aucune différence entre les nombres entiers et les réels.

Conversion nombre vers string

toString() ne fonctionne pas dans Netscape 2 et Internet Explorer 3.

Pour convertir un nombre en string, faire :

var c = (16 * 24)/49 + 12;
d = c.toString();

Maintenant vous pouvez employer toutes les méthodes de strings sur d, tandis que c contient toujours un nombre.

Conversion String vers nombre

Si vous voulez changer une string en nombre, assurez-vous d'abord qu'il y a seulement les chiffres 0-9 dans le string. Ce que je fais toujours est de multiplier simplement le string par 1.

var c = '1234';
d = c * 1;

Etant donné que la multiplication nécessite des nombres, Javascript transforme le string un nombre, si possible. Si ce n'est pas possible, le résultat est NaN. Notez que vous ne pouvez pas faire

var c = '1234';
d = c + 0;

Ceci retournerait '12340 'parce que le Javascript analyse le + comme une concaténation et non une addition.

Méthodes et propriétés des strings

Ainsi que pouvons-nous faire avec des strings? Voici une liste de commandes automatiques de Javascript. La concaténation est un cas particulier, mais toutes autres commandes peuvent être employées sur n'importe quelle string en faisant stringname.command().

Concaténer des strings (+)

Tout d'abord, vous pouvez concaténer des strings, en les cousant ensemble comme dans l'exemple :

document.write(a + b);

donne

Hello world!I am a JavaScript hacker.

Mais naturellement vous voulez un espace entre les deux phrases. Aucun problème. En faisant

document.write(a + ' ' + b);

nous concaténons trois strings : a, ' ' (un espace), et b et nous obtenons

Hello world! I am a JavaScript hacker.

Vous pouvez même employer des nombres ou des calculs, comme:

document.write (a + 3*3 + b);

Maintenant nous concaténons le string a, puis le résultat de 3*3, traité comme string pour l'occasion, et enfin b, ce qui donne

Hello world!9I am a JavaScript hacker.

Attention cependant, si vous voulez ajouter des nombres, Ceci

document.write (a + 3+3 + b);

concatène quatre strings : a, 3, 3 et b, parce que + dans ce contexte signifie concaténer des string, et non pas ajouter

Hello world!33I am a JavaScript hacker.

Utilisez les parenthèses si vous voulez additionner 3 et 3 avant de mettre le string.

document.write (a + (3+3) + b);

concatène a, le résultat de 3+3 et b ce qui donne

Hello world!6I am a JavaScript hacker.

indexOf

Une des méthodes automatiques parmi les plus répandues est indexOf. Chaque caractère à un numéro d'index, donnant sa position dans le string. Notez que le premier caractère à l'indice 0, le second d'indice 1 etc... Ainsi l'indice de 'w' dans le string a est 6.

Par l'emploie d'indexOf nous pouvons donner lecture au numéro d'indice d'un caractère. Mettez .indexOf('') derrière le nom de la chaîne de caractère et mettez le caractère que vous recherchez entre simples quotes ' ' . Ainsi

var a = 'Hello world!';
document.write(a.indexOf('w'))

donne 6. Si le même caractère revient plus d'une fois, cette méthode renverra la première occurrence. Ainsi

document.write(a.indexOf('o'))

donne 4 parce que c'est l'indice du premier 'o' dans le string.

Vous pouvez aussi rechercher une combinaison des caractères (c'est naturellement seulement un string, mais pour empêcher la confusion je ne l'appellerai pas ainsi). indexOf renvoie la position du premier caractère de la combinaison. Ainsi

document.write(a.indexOf('o w'))

donne aussi 4 parce que c'est l'indice du 'o'.

En outre il est possible de rechercher un caractère seulement après un numéro d'index. Par exemple, si vous faites

document.write(a.indexOf('o',5));

vous obtenez le numéro d'index du premier 'o' venant après le caractère qui à l'indice 5 (= l'espace), ainsi vous obtenez 7.

En conclusion, si le caractère ou la combinaison n'est pas présente dans le string, indexOf retourne -1. C'est actuellement l'utilisation la plus répandu d'indexOf: regarder si une certaine combinaison de caractères est présente. C'est le noyau du script de détection de navigateur. Pour voir si le navigateur est Internet Explorer, prenez le string navigator.userAgent et voyez s'il contient 'MSIE':

if (navigator.userAgent.indexOf('MSIE') !=-1)
{
	do something for Explorer
}

Si le numéro d'index de 'MSIE' n'est pas -1 (si 'MSIE' apparaît n'importe ou dans le string), le navigateur est Explorer.

lastIndexOf

Il y a aussi lastIndexOf qui peut renvoyer la dernière occurrence d'un caractère ou d'une combinaison. Il fonctionne exactement comme indexOf. Ainsi

var b = 'I am a JavaScript hacker.'
document.write(b.lastIndexOf('a'))

donne 19 parce que c'est le numéro d’indice du dernier 'a 'dans le string.

charAt

charAt() vous donne le caractère à une certaine position. Par exemple

var b = 'I am a JavaScript hacker.'
document.write(b.charAt(5))

donne 'a', parce que c'est le caractère qui ce trouve à la sixième position (rappelez-vous, le premier caractère est 0!).

length

length vous donne la longueur d'un string.

var b = 'I am a JavaScript hacker.'
document.write(b.length)

donne 25. Notez que la longueur obtenue rajoute 1 de plus que le numéro d'indice du dernier caractère.

split

split() ne fonctionne pas avec Netscape 2 et Explorer 3.

split()est une méthode spéciale dont vous avez parfois besoin. Elle vous permet de scinder un string aux endroits ou ce trouve un certain caractère. Vous devez mettre le résultat dans un tableau et non pas dans une simple variable. Scindons b à chaque espace.

var b = 'I am a JavaScript hacker.'
var temp = new Array();
temp = b.split(' ');

Maintenant le string à été scinder en 5 strings qui sont placés dans le tableau temp. Les espaces sont supprimés.

temp[0] = 'I';
temp[1] = 'am';
temp[2] = 'a';
temp[3] = 'JavaScript';
temp[4] = 'hacker.';

substring

substring est employé pour récupérer une partie d'un string. La syntaxe est substring(first_index,last_index). Ainsi par exemple

var a = 'Hello world!';
document.write(a.substring(4,8));

donne 'O wo ', du premier 'o' (indice 4) au second (d'indice 7). Notez que le 'r' (d'indice 8) ne fait pas partie de ce sous-string.

Vous pouvez également faire

var a = 'Hello world!';
document.write(a.substring(4));

Ceci donne le string complet à partir du caractère d'indice 4 : 'o world!'.

substr

substr() n'est pas utilisable sous Netscape 2 et 3, Explorer 3, Hotjava 3, Opera 3 et WebTV.

Il y a également la méthode substr() qui travaille légèrement différemment. A la place de donner comme deuxième nombre un numéro d'indice, on lui donne le nombre de caractères. Ainsi

document.write(a.substr(4,8));

commence au caractère d'indice 4 ('o') puis donne 8 caractères. Ainsi le résultat sera

o world!

Depuis que substr() n'est plus utilisable sur les navigateurs de version 3 je ne l'emploie jamais.

toLowerCase et toUpperCase

Enfin deux méthodes dont vous avez parfois besoin : toLowerCase() passe le string entier en minuscules, toUpperCase() passe le string entier en majuscule.

var b = 'I am a JavaScript hacker.'
document.write(b.toUpperCase())

donne 'I AM A JAVASCRIPT HACKER.'.

Cours JavaScript : Introduction Javascript Ajouter du Javascript Détection d'objet Déclarations Fontions String DOM Booléen DOM intermédiaire Objets This MouseOver Imprimer Détection navigateur