L'objet global String est un constructeur de chaînes de caractères.

Syntaxe

Les littéraux de chaînes de caractères peuvent avoir l'une des formes suivantes :

'texte de chaînes de caractères'
"texte de chaînes de caractères"
"中文 español English देवनागरी العربية português বাংলা русский 日本語 ਪੰਜਾਬੀ 한국어 עברית"

Les chaînes peuvent également être créées en utilisant directement le constructeur String :

String(truc)

Paramètres

truc
Une valeur qu'on souhaite convertir en une chaîne de caractères.

Littéraux de gabarits

Depuis ECMAScript 2015, les littéraux de chaînes de caractères sont également appelés des littéraux de gabarits :

`Coucou monde`
`Coucou !
monde !`
`Coucou ${qui}`
escape `<a>${qui}</a>`

Échappement des caractères

En dehors des caractères classiques, des caractères spéciaux peuvent être encodés grâce à l'échappement :

Code Résultat
\0 le caractère NUL
\' simple quote
\" double quote
\\ barre oblique inversée
\n nouvelle ligne
\r retour chariot
\v tabulation verticale
\t tabulation
\b retour arrière
\f saut de page (form feed)
\uXXXX point de code Unicode
\xXX caractère Latin-1
\XXX un caractère Latin-1 octal

Note : À la différence d'autres langages, JavaScript ne différencie pas les chaînes contenues dans des doubles quotes (") de celles contenues dans des simples quotes ('). Pour cette raison, les chaînes d'échappement présentées ci-avant fonctionnent sur les chaînes, peu importe la façon dont elles sont encadrées.

Littéraux pour les chaînes longues

Il peut arriver que le code contienne des chaînes plutôt longues. Plutôt que d'avoir des lignes qui s'étirent sur tout le fichier et dans un éditeur de code, il est possible de casser la chaîne sur plusieurs lignes sans que cela modifie le contenu de la chaîne. Il existe deux façons pour le faire :

let chaîneLongue = "Voici une très longue chaîne qui a besoin " +
                   " d'être passée à la ligne parce que sinon " +
                   " ça risque de devenir illisible.";

ou on peut utiliser le caractère barre oblique inversée "\" à la fin de chaque ligne pour indiquer que la chaîne continue sur la ligne suivante. Il faut bien faire attention à ce que la barre oblique soit bien le dernier caractère de la ligne avant le saut de ligne. Sinon, cela ne fonctionnera pas. Voilà comment se présente cette forme :

let chaîneLongue = "Voici une très longue chaîne qui a besoin \
d'être passée à la ligne parce que sinon \
ça risque de devenir illisible.";

Description

Les chaînes de caractères sont utiles pour représenter des données textuelles. Les opérations les plus fréquentes qui concernent les chaînes de caractères sont : la vérification de leur longueur, la concaténation de plusieurs chaînes grâce aux opérateurs + et +=, étudier la présence et la position de fragments de chaînes avec les méthodes indexOf() et substring().

Accéder à un caractère

Il existe deux façons d'accéder à un caractère dans une chaîne. La première façon consiste à utiliser la méthode charAt() :

return 'chat'.charAt(2); // renvoie "a"

La seconde méthode, introduite avec ECMAScript 5, est de manipuler la chaîne comme un tableau, où les caractères sont les éléments du tableau et ont un indice correspondant à leur position :

return 'chat'[2]; // renvoie "a"

En utilisant la seconde notation, il est impossible de supprimer ou d'affecter une valeur à ces propriétés. En effet, les propriétés concernées ne sont ni accessibles en écriture ni configurables. Pour plus d'informations, voir la page de Object.defineProperty().

Comparer des chaînes de caractères

Les développeurs C utilisent la fonction strcmp() pour comparer des chaînes de caractères. En JavaScript, il est possible d'utiliser les opérateurs inférieur et supérieur :

var a = "a";
var b = "b";
if (a < b) { // true
  console.log(a + " est inférieure à " + b);
} else if (a > b) {
  console.log(a + " est supérieure à " + b);
} else {
  console.log(a + " et " + b + " sont égales.");
}

On peut obtenir un résultat semblable avec la méthode localeCompare() qui permet de prendre en compte la locale utilisée et qui est héritée par toutes les instances de String.

Les différences entre les objets String et le type primitif pour les chaînes de caractères

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. (On a la même analogie pour Boolean et Numbers.)

É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 :

var s_prim = "toto";
var s_obj = new String(s_prim);

console.log(typeof s_prim); // affiche "string"
console.log(typeof s_obj);  // affiche "object"

(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
console.log(eval(s1));           // renvoie le nombre 4
console.log(eval(s2));           // renvoie la chaîne "2 + 2"
console.log(eval(s2.valueOf())); // renvoie le nombre 4

Pour ces raisons, il peut y avoir certains problèmes quand le code attend une chaîne primitive plutôt qu'un objet String. Généralement la distinction n'a pas besoin d'être utilisée.

Un objet String peut toujours être converti en son équivalent primitif grâce à la méthode valueOf().

console.log(eval(s2.valueOf())); // renvoie  4
Note : Une autre approche pour gérer des chaînes de caractères en JavaScript consiste à utiliser StringView – une représentation semblable à celle utilisée par le langage C pour traîter les chaînes comme des tableaux typés.

Propriétés

String.prototype
permet d'ajouter des propriétés à tous les objets String.

Méthodes

String.fromCharCode()
Renvoie une chaine de caractères créée en utilisant la séquence de valeurs Unicode fournie.
String.fromCodePoint()
Renvoie une chaine de caractères créée en utilisant la séquence de points de code fournie.
String.raw()
Renvoie une chaine de caractères à partir d'un modèle brut de chaine de caractères.

Méthodes génériques de String

Attention : Ces méthodes sont non-standards, dépréciées et seront retirées prochainement.

Les méthodes pour les instances de String sont également disponibles, pour Firefox et JavaScript 1.6, sur l'objet String afin d'appliquer des méthodes de String à n'importe quel objet. Cela ne fait pas partie du standard ECMAScript. Par exemple :

var num = 15;
console.log(String.replace(num, /5/, '2'));

Pour migrer du code qui utilise ce type de méthodes, se référer à l'article sur cet avertissement.

Les méthodes génériques sont également disponibles pour les méthodes de Array.

Instances de String

Propriétés

String.prototype.constructor
Définit la fonction créant le prototype d'un objet.
String.prototype.length
Reflète la longueur de la chaîne
N
Utilisée pour accéder au caractère en Nème position où N est un entier positif entre 0 et la valeur de String.length moins un. Ces propriétés sont en lecture seule.

Méthodes

Méthodes non liées à HTML

String.prototype.charAt()
Renvoie le caractère (ou plus précisement, le point de code UTF-16) à la position spécifiée.
String.prototype.charCodeAt()
Renvoie un nombre indiquant la valeur du point de code UTF-16 du caractère à la position spécifiée.
String.prototype.codePointAt()
Renvoie un entier positif qui est la valeur du codet UTF-16 à la position donnée.
String.prototype.concat()
Combine le texte de deux chaînes et renvoie une nouvelle chaîne.
String.prototype.includes()
Défini si une chaîne de caractères est contenue dans une autre chaîne de caractères.
String.prototype.endsWith()
Défini si une chaîne de caractère se termine par une chaîne de caractères spécifique.
String.prototype.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.
String.prototype.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.
String.prototype.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 selon un ordre de tri.
String.prototype.match()
Utilisée pour faire correspondre une expression rationnelle avec une chaîne.
String.prototype.normalize()
Retourne la forme Unicode normalisée de la chaîne de caractères appelée.
String.prototype.padEnd()
Complète la chaîne courante avec une autre chaîne de caractères, éventuellement répétée, afin d'obtenir une nouvelle chaîne de la longueur indiquée. La chaîne complémentaire est ajoutée à la fin.
String.prototype.padStart()
Complète la chaîne courante avec une autre chaîne de caractères, éventuellement répétée, afin d'obtenir une nouvelle chaîne de la longueur indiquée. La chaîne complémentaire est ajoutée au début.
String.prototype.quote()
Entoure la chaîne de guillemets doubles anglais (""").
String.prototype.repeat()
Renvoie une chaîne dont le contenu est la chaîne courante répétée un certain nombre de fois.
String.prototype.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.
String.prototype.search()
Exécute la recherche d'une correspondance entre une expression régulière et une chaîne spécifiée.
String.prototype.slice()
Extrait une section d'une chaîne et renvoie une nouvelle chaîne.
String.prototype.split()
Sépare un objet String en un tableau de chaînes en séparant la chaîne en plusieurs sous-chaînes.
String.prototype.startsWith()
Détermine si une chaîne commence avec les caractères d'une autre chaîne.
String.prototype.substr()
Renvoie les caractères d'une chaîne à partir de la position spécifiée et pour la longueur spécifiée.
String.prototype.substring()
Renvoie les caractères d'une chaîne entre deux positions dans celle-ci.
String.prototype.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().
String.prototype.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().
String.prototype.toLowerCase()
Renvoie la valeur de la chaîne appelante convertie en minuscules.
String.prototype.toSource()
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.prototype.toSource().
String.prototype.toString()
Renvoie une chaîne représentant l'objet spécifié. Remplace la méthode Object.prototype.toString().
String.prototype.toUpperCase()
Renvoie la valeur de la chaîne appelante convertie en majuscules.
String.prototype.trim()
Retire les blancs en début et en fin de chaîne. Cette méthode a été définie avec ECMAScript 5.
String.prototype.trimStart()
String.prototype.trimLeft()
Retire les blancs situés au début de la chaîne.
String.prototype.trimEnd()
String.prototype.trimRight()
Retire les blancs situés à la fin de la chaîne.
String.prototype.valueOf()
Renvoie la valeur primitive de l'objet spécifié. Remplace la méthode Object.prototype.valueOf().
String.prototype[@@iterator]()
Renvoie un nouvel objet Iterator qui permet d'itérer sur les codets de la chaîne, chaque codet étant renvoyé comme une chaîne.

Méthodes de transformation à HTML

Ces méthodes ont une utilisation limitée, étant donné qu'elles ne fournissent qu'un petit sous-ensemble des balises et attributs HTML existants.

String.prototype.anchor()
<a name="name"> (cible hypertexte)
String.prototype.big()
<big>
String.prototype.blink()
<blink>
String.prototype.bold()
<b>
String.prototype.fixed()
<tt>
String.prototype.fontcolor()
<font color="color">
String.prototype.fontsize()
<font size="size">
String.prototype.italics()
<i>
String.prototype.link()
<a href="url"> (lien vers une URL)
String.prototype.small()
<small>
String.prototype.strike()
<strike>
String.prototype.sub()
<sub>
String.prototype.sup()
<sup>

Exemples

Conversion en String

Il est possible d'utiliser String comme une alternative à toString() car cela permet de traiter les valeurs null, undefined et les symboles. Ainsi :

var chainesSortie= [];
for (let i = 0, n = valeursEntrée.length; i < n; ++i) {
  chainesSortie.push(String(valeursEntrée[i]));
}

Spécifications

Spécification État Commentaires
ECMAScript 1st Edition (ECMA-262) Standard Définition initiale.
ECMAScript 5.1 (ECMA-262)
La définition de 'String' dans cette spécification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'String' dans cette spécification.
Standard  
ECMAScript Latest Draft (ECMA-262)
La définition de 'String' dans cette spécification.
Projet  

Compatibilité des navigateurs

FonctionnalitéChromeEdgeFirefoxInternet ExplorerOperaSafari
Support simple Oui Oui1 Oui Oui Oui
@@iterator Oui Oui

36

27 — 361 2

17 — 273 4

Non Non Non
Unicode code point escapes \u{xxxxxx} Oui ?40 ? Oui Oui
anchor Oui Oui15 Non Oui Oui
big Oui Oui1 Oui Oui Oui
blink Oui Oui1 Oui Oui Oui
bold Oui Oui1 Oui Oui Oui
charAt Oui Oui1 Oui Oui Oui
charCodeAt Oui Oui1 Oui Oui Oui
codePointAt41 Oui29 Non2810
concat Oui Oui1 Oui Oui Oui
endsWith41 Oui17 Non289
fixed Oui Oui1 Oui Oui Oui
fontcolor Oui Oui1 Oui Oui Oui
fontsize Oui Oui1 Oui Oui Oui
fromCharCode Oui Oui1 Oui Oui Oui
fromCodePoint41 Oui29 Non2810
includes41 Oui

40

18 — 487

Non Oui9
indexOf Oui Oui1 Oui Oui Oui
italics Oui Oui1 Oui Oui Oui
lastIndexOf Oui Oui16 Oui Oui
length Oui Oui1 Oui Oui Oui
link Oui Oui1 Oui Oui Oui
localeCompare Oui Oui1 Oui Oui Oui
localeCompare.locales24 Oui29111510
localeCompare.options24 Oui29111510
match Oui Oui1 Oui Oui Oui
match.flags Non Non1 — 49 Non Non Non
normalize34 Oui31 Non Oui10
padEnd571548 Non4410
padStart571548 Non4410
prototype Oui Oui1 Oui Oui Oui
quote Non Non1 — 37 Non Non Non
raw41 Oui34 Non Non10
repeat41 Oui24 Non Oui9
replace Oui Oui1 Oui Oui Oui
replace.flags Non Non1 — 49 Non Non Non
search Oui Oui1 Oui Oui Oui
search.flags Non Non1 — 49 Non Non Non
slice Oui Oui1 Oui Oui Oui
small Oui Oui1 Oui Oui Oui
split Oui Oui1 Oui Oui Oui
startsWith41 Oui17 Non289
strike Oui Oui1 Oui Oui Oui
sub Oui Oui1 Oui Oui Oui
substr Oui Oui1 Oui Oui Oui
substring Oui Oui1 Oui Oui Oui
sup Oui Oui1 Oui Oui Oui
toLocaleLowerCase Oui Oui1 Oui Oui Oui
toLocaleLowerCase.locale ? ?55 ? ? ?
toLocaleUpperCase Oui Oui1 Oui Oui Oui
toLocaleUpperCase.locale ? ?55 ? ? ?
toLowerCase Oui Oui1 Oui Oui Oui
toSource Non Non1 Non Non Non
toString Oui Oui1 Oui Oui Oui
toUpperCase Oui Oui1 Oui Oui Oui
trim Oui Oui3.5910.55
trimEnd

66

Oui9

?

61

3.59

Non53 ?
trimStart

66

Oui10

?

61

3.510

Non53 ?
valueOf Oui Oui1 Oui Oui Oui
FonctionnalitéAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Support simple Oui Oui Oui4 Oui Oui Oui
@@iterator Non Non ?

36

27 — 361 2

17 — 273 4

Non Non Non
Unicode code point escapes \u{xxxxxx} Oui Oui ?40 Oui Oui Oui
anchor Oui Oui Oui4 Oui Oui Oui
big Oui Oui Oui4 Oui Oui Oui
blink Oui Oui Oui4 Oui Oui Oui
bold Oui Oui Oui4 Oui Oui Oui
charAt Oui Oui Oui4 Oui Oui Oui
charCodeAt Oui Oui Oui4 Oui Oui Oui
codePointAt Oui Oui Oui29 Oui10 Oui
concat Oui Oui Oui4 Oui Oui Oui
endsWith Oui36 Oui17 Oui9 Oui
fixed Oui Oui Oui4 Oui Oui Oui
fontcolor Oui Oui Oui4 Oui Oui Oui
fontsize Oui Oui Oui4 Oui Oui Oui
fromCharCode Oui Oui Oui4 Oui Oui Oui
fromCodePoint Oui Oui Oui29 Oui10 Oui
includes Oui Oui Oui

40

18 — 487

Oui9 Oui
indexOf Oui Oui Oui4 Oui Oui Oui
italics Oui Oui Oui4 Oui Oui Oui
lastIndexOf Oui Oui Oui4 Oui Oui Oui
length Oui Oui Oui4 Oui Oui Oui
link Oui Oui Oui4 Oui Oui Oui
localeCompare Oui Oui Oui4 Oui Oui Oui
localeCompare.locales Non26 ? Non Non10 Oui
localeCompare.options Non26 ? Non Non10 Oui
match Oui Oui Oui4 Oui Oui Oui
match.flags Non Non Non4 — 49 Non Non Non
normalize Non34 Oui31 Oui10 Oui
padEnd5757 Oui4844107.0
padStart5757 Oui4844107.0
prototype Oui Oui Oui4 Oui Oui Oui
quote Non Non Non4 — 37 Non Non Non
raw Non41 Oui34 Non104.0
repeat Non36 Oui24 Oui9 Oui
replace Oui Oui Oui4 Oui Oui Oui
replace.flags Non Non Non4 — 49 Non Non Non
search Oui Oui Oui4 Oui Oui Oui
search.flags Non Non Non4 — 49 Non Non Non
slice Oui Oui Oui4 Oui Oui Oui
small Oui Oui Oui4 Oui Oui Oui
split Oui Oui Oui4 Oui Oui Oui
startsWith Oui36 Oui17 Oui9 Oui
strike Oui Oui Oui4 Oui Oui Oui
sub Oui Oui Oui4 Oui Oui Oui
substr Oui Oui Oui4 Oui Oui Oui
substring Oui Oui Oui4 Oui Oui Oui
sup Oui Oui Oui4 Oui Oui Oui
toLocaleLowerCase Oui Oui Oui4 Oui Oui Oui
toLocaleLowerCase.locale ? ? ?55 ? ? ?
toLocaleUpperCase Oui Oui Oui4 Oui Oui Oui
toLocaleUpperCase.locale ? ? ?55 ? ? ?
toLowerCase Oui Oui Oui4 Oui Oui Oui
toSource Non Non Non4 Non Non Non
toString Oui Oui Oui4 Oui Oui Oui
toUpperCase Oui Oui Oui4 Oui Oui Oui
trim Oui Oui Oui4 Oui Oui Oui
trimEnd

66

Oui9

66

Oui9

?

61

49

53 ? ?
trimStart

66

Oui10

66

Oui10

?

61

410

53 ? ?
valueOf Oui Oui Oui4 Oui Oui Oui

1. A placeholder property named @@iterator is used.

2. Supported as @@iterator.

3. A placeholder property named iterator is used.

4. Supported as iterator.

5. Starting with version 17, the quotation mark (") is replaced by its HTML reference character (") in strings supplied for the name parameter.

6. From version 0.12: this feature is behind the --harmony runtime flag.

7. Supported as contains.

8. From version 7.0.0: this feature is behind the --harmony runtime flag.

9. Supported as trimRight.

10. Supported as trimLeft.

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight, grandoc, LCaba49, gabrielvv, tregagnon, teoli, fscholz, daniel35310, rat
Dernière mise à jour par : SphinxKnight,