[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/String [Back]  [Original]

String - JavaScript | MDN

Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.

View in English Always switch to English

String

Baseline Large disponibilit *

Cette fonctionnalit est bien tablie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.

* Certaines parties de cette fonctionnalit peuvent bnficier de prise en charge variables.

Un objet String est utilis afin de reprsenter et de manipuler une chane de caractres.

Dans cet article

Description

Les chanes de caractres sont utiles pour stocker des donnes qui peuvent tre reprsentes sous forme de texte. Parmi les oprations les plus utilises pour manipuler les chanes de caractres, on a : la vrification de leur longueur avec length, la construction et la concatnation avec les oprateurs + et +=, la recherche de sous-chane avec les mthodes includes() ou indexOf() ou encore l'extraction de sous-chanes avec la mthode substring().

Crer des chanes de caractres

Il est possible de crer des chanes de caractres comme des valeurs primitives ou comme des objets avec le constructeur String() :

js
const string1 = "Une chane de caractres primitive";
const string2 = "L encore une valeur de chane de caractres primitive";
const string3 = `Et ici aussi`;
js
const string4 = new String("Un objet String");

Les valeurs primitives ou les objets reprsentant des chanes de caractres peuvent tre utiliss de faon interchangeable dans la plupart des situations. Voir ci-aprs Chanes de caractres : valeurs primitives et objets.

Les valeurs littrales pour les chanes de caractres peuvent tre indiques avec des simples quotes ('), des doubles quotes (") ou encore par des accents graves (`). Cette dernire forme permet de dfinir un littral de gabarit de chane de caractres avec lequel on pourra interpoler des expressions dans une chane de caractres.

Accder un caractre

Il existe deux faons d'accder un caractre dans une chane. La premire faon consiste utiliser la mthode charAt() :

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

La seconde mthode, introduite avec ECMAScript 5, est de manipuler la chane comme un tableau, o les caractres sont les lments du tableau et ont un indice correspondant leur position :

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

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

Comparer des chanes de caractres

Les dveloppeurs C utilisent la fonction strcmp() pour comparer des chanes de caractres. En JavaScript, il est possible d'utiliser les oprateurs infrieur et suprieur :

js
let a = "a";
let b = "b";
if (a < b) {
  // true
  console.log(a + " est infrieure  " + b);
} else if (a > b) {
  console.log(a + " est suprieure  " + b);
} else {
  console.log(a + " et " + b + " sont gales.");
}

On peut obtenir un rsultat semblable avec la mthode localeCompare() qui permet de prendre en compte la locale utilise et qui est hrite par toutes les instances de String.

On notera que a == b compare les chanes de caractres a et b de faon sensible la casse. Si on souhaite comparer des chanes sans tre sensible la casse, on pourra utiliser une fonction semblable  :

js
function isEqual(str1, str2) {
  return str1.toUpperCase() === str2.toUpperCase();
}

On utilise ici une conversion en majuscules plutt qu'en minuscules, car cela cause certains problmes de conversion pour certains caractres UTF-8.

Les diffrences entre les objets String et le type primitif pour les chanes de caractres

En JavaScript, on distingue d'une part les objets String et d'autre par les valeurs primitives qui sont des chanes de caractres (il en va de mme pour les boolens/Boolean et les nombres/Number).

Les valeurs littrales (dlimites par des simples quotes, des doubles quotes ou des accents graves et les chanes de caractres renvoyes par les appels String sans le mot-cl new sont des chanes de caractres primitives. JavaScript convertit automatiquement les valeurs primitives en objets String et il est donc possible d'utiliser les mthodes objet de String sur les chanes de caractres primitives. Dans les contextes o une mthode est appele sur une chane de caractres primitive ou alors qu'on recherche une proprit, JavaScript convertira implicitement la valeur primitive et appellera la mthode ou accdera la proprit correspondante.

js
let s_prim = "toto";
let s_obj = new String(s_prim);

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

Les chanes primitives et les objets String renvoient des rsultats diffrents lorsqu'ils sont valus avec eval(). Les chanes primitives sont traites comme du code source, tandis que les objets String sont traits comme tous les autres objets, en renvoyant l'objet. Par exemple :

js
let s1 = "2 + 2"; // cre une chane primitive
let s2 = new String("2 + 2"); // cre un objet String
console.log(eval(s1)); // renvoie le nombre 4
console.log(eval(s2)); // renvoie la chane "2 + 2"

Pour ces raisons, il peut y avoir certains problmes quand le code attend une chane primitive plutt qu'un objet String. Toutefois, cette distinction est rarement ncessaire en pratique.

Un objet String peut toujours tre converti en son quivalent primitif grce la mthode valueOf().

js
console.log(eval(s2.valueOf())); // renvoie 4

chappement des caractres

En dehors des caractres classiques, des caractres spciaux peuvent tre encods grce l'chappement :

Code Rsultat
\0 Caractre nul (U+0000 NULL)
\' simple quote (U+0027 APOSTROPHE)
\" double quote (U+0022 QUOTATION MARK)
\\ barre oblique inverse (U+005C REVERSE SOLIDUS)
\n nouvelle ligne (U+000A LINE FEED; LF)
\r retour chariot (U+000D CARRIAGE RETURN; CR)
\v tabulation verticale (U+000B LINE TABULATION)
\t tabulation (U+0009 CHARACTER TABULATION)
\b retour arrire (U+0008 BACKSPACE)
\f saut de page (U+000C FORM FEED)
\uXXXX (XXXX tant 4 chiffres hexadcimaux pour l'intervalle of 0x0000 - 0xFFFF) Point de code Unicode entre U+0000 et U+FFFF (reprsente le plan Unicode multilingue basique)
\u{X} ... \u{XXXXXX} (XXXXXXX tant 1 6 chiffres hexadcimaux pour l'intervalle 0x0 - 0x10FFFF) Point de code Unicode entre U+0000 et U+10FFFF (reprsente l'intgralit d'Unicode)
\xXX (XX tant 2 chiffres hexadcimaux pour l'intervalle 0x00 - 0xFF) Point de code Unicode entre U+0000 et U+00FF (correspond Basic Latin et Latin-1 supplement ; quivalent ISO-8859-1)

Littraux pour les chanes longues

Il peut arriver que le code contienne des chanes plutt longues. Plutt que d'avoir des lignes qui s'tirent sur tout le fichier et dans un diteur de code, il est possible de casser la chane sur plusieurs lignes sans que cela modifie le contenu de la chane. Il existe deux faons de faire.

Mthode 1

js
let chaineLongue =
  "Voici une trs longue chane qui a besoin " +
  " d'tre passe  la ligne parce que sinon " +
  " a risque de devenir illisible.";

Mthode 2

On peut sinon utiliser le caractre barre oblique inverse "\" la fin de chaque ligne pour indiquer que la chane continue sur la ligne suivante. Il faut bien faire attention ce que la barre oblique soit bien le dernier caractre de la ligne avant le saut de ligne. Sinon, cela ne fonctionnera pas. Voil comment se prsente cette forme :

js
let chaineLongue =
  "Voici une trs longue chane qui a besoin \
d'tre passe  la ligne parce que sinon \
a risque de devenir illisible.";

Mthode 3

Si les sauts de ligne doivent faire partie du rsultat, on peut utiliser l'accent grave comme dlimiteur de chane. Celui-ci permet d'utiliser des sauts de ligne l'intrieur de la valeur littrale.

js
let chaineLongue = `Voici une trs longue chane qui a besoin
d'tre passe  la ligne parce que sinon
a risque de devenir illisible.`;

Constructeur

String()

Cre un nouvel String. S'il est appel comme une fonction plutt que comme un constructeur, il effectue une conversion de la valeur en chane de caractres.

Mthodes statiques

String.fromCharCode(num1 [, ...[,numN]])

Renvoie une chane de caractres cre en utilisant la squence indique de valeurs Unicode.

String.fromCodePoint(num1 [, ...[,numN]])

Renvoie une chane de caractres cre en utilisant la squence indique de points de code.

String.raw()

Renvoie une chane de caractres cre partir d'un gabarit de chane de caractres brut.

Proprits des instances

String.prototype.length

Cette proprit indique la longueur de la chane de caractres. Elle est en lecture seule.

Mthodes des instances

String.prototype.at(index)

Renvoie le caractre (exactement un seul codet UTF-16) l'indice indiqu par index. Les indices ngatifs sont accepts, dans ce cas ils indiquent la position par rapport au dernier caractre.

String.prototype.charAt(index)

Renvoie le caractre (exactement un seul codet UTF-16) l'indice indiqu par index.

String.prototype.charCodeAt(index)

Renvoie un nombre qui est la valeur du codet UTF-16 l'indice indiqu par index.

String.prototype.codePointAt(pos)

Renvoie un entier positif qui correspond la valeur du codet UTF-16 la position indique par pos.

String.prototype.concat(str [,...strN ])

Combine le texte de deux (ou plusieurs) chanes en une nouvelle chane de caractres.

String.prototype.includes(searchString [, position])

Dtermine si la chane de caractres courante contient searchString.

String.prototype.endsWith(searchString [, length])

Dtermine si la chane de caractres courante se termine par searchString.

String.prototype.indexOf(searchValue [, fromIndex])

Renvoie l'indice, au sein de la chane courante, de la premire occurrence de searchValue ou -1 si ce motif n'est pas trouv.

String.prototype.lastIndexOf(searchValue [, fromIndex])

Renvoie l'indice, au sein de la chane courant, de la dernire occurrence de searchValue ou -1 si ce motif n'est pas trouv.

String.prototype.localeCompare(compareString [, locales [, options]])

Renvoie un nombre indiquant si la chane courante vient avant ou aprs (ou est quivalente ) compareString pour l'ordre de tri.

String.prototype.match(regexp)

Permet de tester la correspondance d'une expression rationnelle entre regexp et la chane de caractres courante.

String.prototype.matchAll(regexp)

Renvoie un itrateur contenant l'ensemble des correspondances de l'expression rationnelle regexp au sein de la chane de caractres courante.

String.prototype.normalize([form])

Renvoie la forme Unicode normalise de la chane courante.

String.prototype.padEnd(targetLength [, padString])

Complte la chane courante la fin avec une chane donne afin d'obtenir une longueur cible targetLength et renvoie la chane ainsi construite.

String.prototype.padStart(targetLength [, padString])

Complte la chane courante au dbut avec une chane donne afin d'obtenir une longueur cible targetLength et renvoie la chane ainsi construite.

String.prototype.repeat(count)

Renvoie une chane de caractres qui est la rptition (count fois) de la chane de caractres courante.

String.prototype.replace(searchFor, replaceWith)

Remplace les occurrences de searchFor par replaceWith. searchFor peut tre une chane de caractres ou une expression rationnelle et replaceWith peut tre une chane de caractres ou une fonction.

String.prototype.replaceAll(searchFor, replaceWith)

Remplace toutes les occurrences de searchFor avec replaceWith. searchFor peut tre une chane de caractres ou une expression rationnelle et replaceWith peut tre une chane de caractres ou une fonction.

String.prototype.search(regexp)

Recherche une correspondance entre une expression rationnelle regexp et la chane de caractres courante.

String.prototype.slice(beginIndex[, endIndex])

Extrait une section de la chane de caractres et renvoie une nouvelle chane de caractres.

String.prototype.split([sep [, limit] ])

Renvoie un tableau de chanes de caractres compos des fragments de la chane courante scinde chaque occurrence de la sous-chane sep.

String.prototype.startsWith(searchString [, length])

Dtermine si la chane courante commence par la chane de caractres indique en paramtre (searchString).

String.prototype.substring(indexStart [, indexEnd])

Renvoie une nouvelle chane de caractres contenant les caractres de la chane courante, situs partir de l'indice donn ou entre les indices donns.

String.prototype.toLocaleLowerCase( [locale, ...locales])

Renvoie une conversion en minuscules de la chane de caractres courante qui respecte la locale indique.

Pour la plupart des langues, cela renverra la mme valeur que toLowerCase().

String.prototype.toLocaleUpperCase( [locale, ...locales])

Renvoie une conversion en majuscules de la chane de caractres courante qui respecte la locale indique.

Pour la plupart des langues, cela renverra la mme valeur que toUpperCase().

String.prototype.toLowerCase()

Renvoie la valeur de la chane de caractres, convertie en minuscules.

String.prototype.toString()

Renvoie une chane de caractres reprsentant l'objet courant. Surcharge la mthode Object.prototype.toString().

String.prototype.toUpperCase()

Renvoie la valeur de la chane de caractres, convertie en majuscules.

String.prototype.trim()

Retire les blancs situs au dbut et la fin de la chane de caractres.

String.prototype.trimStart()

Retire les blancs situs au dbut de la chane de caractres.

String.prototype.trimEnd()

Retire les blancs situs la fin de la chane de caractres.

String.prototype.valueOf()

Renvoie la valeur primitive de l'objet courant. Surcharge la mthode Object.prototype.valueOf().

String.prototype.@@iterator()

Renvoie un nouvel objet itrateur qui permet d'itrer sur les points de code composant la chane de caractre. Chaque point de code est renvoy comme une chane de caractres.

Mthodes de conversion HTML

Attention : Ces mthodes sont dprcies et ne doivent plus tre utilises.

Elles ont des possibilits limites et ne concernent qu'une petite sous-partie des lments et attributs HTML disponibles.

String.prototype.anchor()

<a name="name"> (cible hypertexte)

String.prototype.big()

<big>

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

<a href="url"> (lien d'une URL)

String.prototype.small()

<small>

String.prototype.strike()

<strike>

String.prototype.sub()

<sub>

String.prototype.sup()

<sup>

Exemples

Conversion en chane de caractres

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

js
let chainesSortie = [];
for (let i = 0, n = valeursEntree.length; i < n; ++i) {
  chainesSortie.push(String(valeursEntree[i]));
}

Spcifications

Spcification
ECMAScript 2027 LanguageSpecification
# sec-string-objects

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page