22


String
Crée un objet permettant de travailler avec une série de caractères.
Syntaxe
new String()
new String(string)
Les chaînes de caractères littérales prennent la forme suivante :
'stringText'
"stringText"
Paramètres
chaîne
N'importe quelle chaîne de caractères.
stringText
Une série de caractères correctement encodée.
Description
Les objets String sont créés en appelant le constructeur new String(). L'objet String encapsule le type de données primitif string de JavaScript en fournissant les méthodes décrites plus bas. La fonction globale String() peut également être appelée sans l'opérateur new pour créer une chaîne primitive. Les chaînes littérales dans le code JavaScript sont des chaînes primitives.
Étant donné que JavaScript effectue automatiquement les conversions entre chaînes primitives et objets String, toute méthode de l'objet String peut être appelée sur une chaîne primitive. JavaScript convertira automatiquement la chaîne en un objet String temporaire, appellera la méthode, puis détruira l'objet temporaire. Par exemple, on peut utiliser la propriété String.length sur une chaîne créée de manière littérale :
s_obj.length;       // 3
s_prim.length;      // 3
s_also_prim.length; // 3
'foo'.length;       // 3
"foo".length;       // 3
(Une chaîne littérale peut être délimitée par des guillemets simples ou doubles.)
Les objets String peuvent être convertis en chaînes primitives à l'aide de String.valueOf().
Les chaînes primitives et les objets String renvoient des résultats différents lorsqu'ils sont évalués en JavaScript. Les chaînes primitives sont traitées comme du code source, tandis que les objets String sont traités comme un objet de séquence de caractères. Par exemple :
s1 = "2 + 2"; // crée une chaîne primitive
s2 = new String("2 + 2"); // crée un objet String
eval(s1);     // renvoie le nombre 4
eval(s2);     // renvoie la chaîne "2 + 2"
eval(s2.valueOf()); // renvoie le nombre 4
Accès à des caractères individuels
Deux manières d'accéder à un caractère individuel dans une chaîne existent. La première est la méthode charAt  :
return 'cat'.charAt(1); // renvoie "a"
La seconde manière est de traiter la chaîne comme s'il s'agissait d'un tableau, avec chaque indice correspondant à un caractère particulier :
return 'cat'[1]; // renvoie "a"
La seconde manière (traiter une chaîne comme un tableau) ne fait pas partie de la spécification ECMAScript, c'est une fonctionnalité de JavaScript.
Dans les deux cas, il ne sera pas possible de modifier un caractère existant. Si l'on essaie de modifier un caractère via charAt, on obtient une erreur ; alors qu'en utilisant la méthode du tableau, aucune erreur n'est provoquée, mais la chaîne elle-même ne change pas.
Comparaison de chaînes
Les développeurs C connaissent la fonction strcmp() pour comparer des chaînes. En JavaScript, on utilisera simplement les opérateurs plus petit et plus grand :
var a = "a";
var b = "b";
if (a < b) // true
    print(a + " est inférieur à " + b);
else if (a > b)
    print(a + " est supérieur à " + b);
else
    print(a + " et " + b + " sont égaux.");
On peut arriver à un résultat similaire en utilisant la méthode localeCompare héritée par les instances String.
Propriétés
Pour les propriétés héritées par les instances de String consultez Propriétés des instances de String.
prototype 
permet d'ajouter des propriétés à tous les objets String.

Propriétés héritées de Function.prototype
caller, constructor, length, name

Méthodes
Pour les méthodes héritées par les instances de String consultez Méthodes des instances de String.
fromCharCode 
renvoie une chaîne créée en utilisant la séquence de valeurs Unicode fournie.

Méthodes héritées de Function.prototype
apply, call, toSource, toString, valueOf
Méthodes héritées de Object.prototype
__defineGetter__, __defineSetter__, hasOwnProperty, isPrototypeOf, __lookupGetter__, __lookupSetter__, __noSuchMethod__, propertyIsEnumerable, unwatch, watch

Instances de chaînes
Toutes les instances de String héritent de String.prototype. Les modifications de l'objet prototype String sont répercutées sur toutes les instances de String. === Propriétés ===
constructor
Spécifie la fonction créant le prototype d'un objet.
length
Reflète la longueur de la chaîne.
N
Non standard
Utilisée pour accéder au caractère en Nème position où N est un entier positif entre 0 et la valeur de length mois un. Ces propriétés sont en lecture seule.
=== Méthodes === ==== Méthodes non liées à HTML ====
charAt
Renvoie le caractère à la position spécifiée.
charCodeAt
Renvoie un nombre indiquant la valeur Unicode du caractère à la position spécifiée.
concat
Combine le texte de deux chaînes et renvoie une nouvelle chaîne.
indexOf
Renvoie la position au sein de l'objet String appelant de la première occurrence de la valeur spécifiée, ou -1 si celle-ci n'est pas trouvée.
lastIndexOf
Renvoie la position au sein de l'objet String appelant de la dernière occurrence de la valeur spécifiée, ou -1 si celle-ci n'est pas trouvée.
localeCompare
Renvoie un nombre indiquant si une chaîne de référence vient avant, après ou est en position identique à la chaîne donnée dans l'ordre de tri.
match
Utilisée pour faire correspondre une expression rationnelle à une chaîne.
quote
Non standard
Entoure la chaîne de guillemets doubles anglais (""").
replace
Utilisée pour rechercher une correspondance entre une expression rationnelle et une chaîne, et pour remplacer la sous-chaîne correspondante par une nouvelle chaîne.
search
Exécute la recherche d'une correspondance entre une expression régulière et une chaîne spécifiée.
slice
Extrait une section d'une chaîne et renvoie une nouvelle chaîne.
split
Sépare un objet String en un tableau de chaînes en séparant la chaîne en plusieurs sous-chaînes.
substr
Renvoie les caractères d'une chaîne à partir de la position spécifiée et pour la longueur spécifiée.
substring
Renvoie les caractères d'une chaîne entre deux positions dans celle-ci.
toLocaleLowerCase
Les caractères de la chaîne seront convertis en minuscules selon la locale courante. Pour la plupart des langues, le résultat est identique à toLowerCase.
toLocaleUpperCase
Les caractères de la chaîne seront convertis en majuscules selon la locale courante. Pour la plupart des langues, le résultat est identique à toUpperCase.
toLowerCase
Renvoie la valeur de la chaîne appelante convertie en minuscules.
toSource
Non standard
Renvoie une représentation littérale de l'objet ; celle-ci peut être utilisée pour créer un nouvel objet. Remplace la méthode Object.toSource.
toString
Renvoie une chaîne représentant l'objet spécifié. Remplace la méthode Object.toString.
toUpperCase
Renvoie la valeur de la chaîne appelante convertie en majuscules.
valueOf
Renvoie la valeur primitive de l'objet spécifié. Remplace la méthode Object.valueOf.
==== Méthodes d'encadrement HTML ====

Non standard

Chacune des méthodes suivantes renvoie une copie de la chaîne entourée des balises HTML appropriés.

anchor
<a name="name"> (cible hypertexte)
big
<big>
blink
<blink>
bold
<b>
fixed
<tt>
fontcolor
<font color="color">
fontsize
<font size="size">
italics
<i>
link
<a href="url"> (link to URL)
small
<small>.
strike
<strike>
sub
<sub>
sup
<sup>
Ces méthodes sont relativement peu utiles, étant donné qu'elles ne fournissent qu'un petit sous-ensemble des balises et attributs HTML existants.

Méthodes héritées de Object.prototype
__defineGetter__, __defineSetter__, hasOwnProperty, isPrototypeOf, __lookupGetter__, __lookupSetter__, __noSuchMethod__, propertyIsEnumerable, unwatch, watch

Exemples
Exemple : extension d'instances de chaînes avec une méthode repeat
L'exemple qui suit crée une méthode, str_rep, et utilise l'instruction String.prototype.repeat = str_rep pour ajouter cette méthode à tous les objets String. Toutes les instances de String auront alors cette méthode, même les objets déjà créés. L'exemple crée ensuite une méthode alternative et écrase la méthode précédente sur un des objets String à l'aide de l'instruction s1.repeat = fake_rep. La méthode str_rep des objets String restants n'est pas modifiée.
var s1 = new String("a");
var s2 = new String("b");
var s3 = new String("c");

// Crée une méthode de répétition pour tous les objets String
function str_rep(n) {
   var s = "", t = this.toString();
   while (--n >= 0) {
     s += t
   }
   return s;
}

String.prototype.repeat = str_rep;

s1a = s1.repeat(3); // renvoie "aaa"
s2a = s2.repeat(5); // renvoie "bbbbb"
s3a = s3.repeat(2); // renvoie "cc"

// Crée une méthode alternative et l'assigne à une variable String
function fake_rep(n) {
   return "répète " + this + " " + n + " fois.";
}

s1.repeat = fake_rep
s1b = s1.repeat(1); // renvoie "répète a 1 fois."
s2b = s2.repeat(4); // renvoie "bbbb"
s3b = s3.repeat(6); // renvoie "cccccc"
La fonction de cet exemple fonctionne également sur les objets String qui ne sont pas créés avec le constructeur String. Le code qui suit renvoie « zzz ».
"z".repeat(3);