Le Tutoriel de ECMAScript String

View more Tutorials:

1- ECMAScript String

Dans  ECMAScript, String est un type de données particulier parce qu'il est souvent utilisé dans un programme, il faut alors de la performance et de la flexibilité. C'est pourquoi le String est à la fois objective et primitive.

String Literal

Vous pouvez créer une  string literal (chaîne littérale). La  string literal est stocké dans une pile (stack) et elle n'a pas besoin de grande espace de stockage et elle est moins coûteux à manipuler.
let aStringLiteral = "Hello World";
Des  string literal sont sauvegardé dans un réservoir commun (Common Pool). Lorsque vous déclarez deux variables  String Literal de même contenu, elles indiqueront la même adresse stockée le réservoir.
string-literal-example.js
let a = "Tom";
let b = "Jerry";
let c = "Jerry";

console.log(a); // Tom
console.log(b); // Jerry
console.log(c); // Jerry

// a, b: Same address?
console.log( a === b); // false

// b, c: Same address?
console.log( b === c); // true
 

String Object

Vous pouvez créer une chaine via le  constructor de la classe  String. Dans ce cas, vous recevrez un  String object (Objet chaine).
let myStringObj = new String(value);
Paramètre :
  • value: Une valeur à convertir (convert) en chaine.
string-object-example.js
let a = new String("Hello World");
console.log(a); // [String: 'Hello World']

let b = new String(true);
console.log(b); // [String: 'true']

let c = new String(100.20);
console.log(c); // [String: '100.2']
L'opérateur new toujours crée une nouvel entité sur la mémoire  Heap, cela explique pourquoi vous devez dépenser plus de l'argent lorsque vous utilisez  String Object.
Lorsque vous affectez une nouvelle valeur variable aa à la variable bb, la variable bb indiquera l'adresse en mémoire sur laquelle la variable aa indique. Dans ce cas, aucune entité ne sera créée en mémoire.
string-object-example2.js
let aa = new String("Tom");

let bb = aa;

// aa, bb: Same address?
var sameAddress = aa === bb;

console.log( sameAddress); // true

String object vs String Literal

Des  String Literal sont stocké sur  Stack. Alors que des  String Object sont créés et stockés sur la mémoire  Heap, cela nécessite une gestion de la mémoire complexe et un espace de stockage. Vous devez donc utiliser String Literal au lieu de String Object à tout moment.

typeof

L'opérateur  typeof(string_object) va renvoyer la chaine  'object', alors que  typeof(string_literal) renverra la chaine  'string' :
typeof-example.js
let myStringObj = new String("Tom");
console.log(myStringObj); // [String: 'Tom']
console.log( typeof(myStringObj) ); // object

let myStringLiteral =  "Jerry";
console.log(myStringLiteral); // Jerry
console.log( typeof(myStringLiteral) ); // string

Function - String(something)

La fonction  String(something) convertit quelque chose ( something) en  String Literal.
String-function-example.js
// String Object:
let s = new String("Hello");
console.log(s); // [String: 'Hello']

// String(value) function:
// Convert String Object to String Literal.
let s2 = String(s);
console.log(s2); // Hello

// A Number Object.
let number = new Number(300.20);
let n2 = String(number);

console.log( n2 ); // 300.2

2- String est immuable (Imutable)

Dans  ECMAScript, le type de données  String est immuable (imutable), ce qui signifie que toute action que vous effectuez sur les chaînes, telle que la concaténation de chaînes, la coupe de chaînes, etc., crée une nouvelle chaîne dans la mémoire ou renvoie une autre chaîne.
La méthode  concat(string) sert à concaténer (concatenate) une chaîne dans la chaîne actuel. Mais en réalité, la chaîne en cours ne change pas et une nouvelle chaîne (le résultat de la concaténation) est créée. La figure suivante illustre le comportement du programme : 
concat-example2.js
let a = "Hello";
let b = "World";

let c = a.concat(b);

console.log(c); // HelloWorld
console.log(a); // Hello

console.log( a === c); // false

3- Properties of String

  • constructor
  • length
  • prototype

length

Cette  property renvoie le nombre de caractère dans une chaine.
length-example.js
let s1 = "Tom";

console.log(s1); // Tom
console.log("Length "+ s1.length); // 3

let s2 = "Tom & Jerry";

console.log(s2); // Tom & Jerry
console.log("Length "+ s2.length); // 11
 

4- Méthodes de String

charAt(index)

Returns the character at the specified index.
charAt-example.js
let str = "This is a String";

console.log("str.charAt(0) is:" + str.charAt(0)); // T
console.log("str.charAt(1) is:" + str.charAt(1)); // h
console.log("str.charAt(2) is:" + str.charAt(2)); // i
console.log("str.charAt(3) is:" + str.charAt(3)); // s
console.log("str.charAt(4) is:" + str.charAt(4)); //
console.log("str.charAt(5) is:" + str.charAt(5)); // i

charCodeAt(index)

charCodeAt-example.js
let str = "This is a String";

console.log("str.charCodeAt(0) is:" + str.charCodeAt(0)); // 84
console.log("str.charCodeAt(1) is:" + str.charCodeAt(1)); // 104
console.log("str.charCodeAt(2) is:" + str.charCodeAt(2)); // 105
console.log("str.charCodeAt(3) is:" + str.charCodeAt(3)); // 115
console.log("str.charCodeAt(4) is:" + str.charCodeAt(4)); // 32
console.log("str.charCodeAt(5) is:" + str.charCodeAt(5)); // 105

concat(string2[,string3[, ..., stringN]]

indexOf(searchValue[, fromIndex])

indexOf-example.js
let str = "This is a String";

let idx = str.indexOf("is", 3);
console.log( idx ); // 5

let idx2 = str.indexOf("is");
console.log( idx2 ); // 2

lastIndexOf(searchValue[, toIndex])

lastIndexOf-example.js
let str = "This is a String";

let idx = str.lastIndexOf("is", 10);
console.log( idx ); // 5

let idx2 = str.lastIndexOf("is", 5);
console.log( idx2 ); // 5

let idx3 = str.lastIndexOf("is", 4);
console.log( idx3 ); // 4

str.localeCompare( otherStr )

This method is used to compare the content of  current string and other string. Its purpose is to evaluate which string will precede, and which string succeeds. This method is useful when you want to arrange the order of strings. The comparison rules are based on the Locale of the environment. 
returns:
  • This method returns 0, which means that the 2 strings are the same .
  • This method returns a number greater than 0 , which means that the current string is greater (succeeds) other string.
  • This method returns a number less than 0,  which means that the current string is less (precede) than other string.  
localeCompare-example.js
//  "A" - "B" - "C"   ("A" < "B")
console.log( "A".localeCompare("B") ); // -1

// "B" > "A"
console.log( "B".localeCompare("A") ); // 1

// "Abc" < "bced"
console.log( "Abc".localeCompare("bced") ); // -1

str.replace(regexp/substr, newSubStr/function[, flags]);

Parameters:
  • regexp − A RegExp object (Regular Expression). Substring matching the regular expression will be replaced by the return value of second parameter.
  • substr − A String that is to be replaced by newSubStr.
  • newSubStr − The String that replaces the substring received from first parameter.
  • function − A function to be invoked to create the new substring.
  • flags − A string containing attributes used for regular expressions (First parameter).
  • TODO Link!
Example:
replace-example.js
let str = "Years: 2001, 2012, 2018";

// Replace first
let newStr = str.replace("20", "21");

console.log( newStr ); // Years: 2101, 2012, 2018
Example: Seek substrings that matches a regular expression and replace them with another substring. 
replace-example2.js
let str = "Mr Blue has a blue house and a blue car";

// Replace (g: Global/All)
var res = str.replace(/blue/g, "red");

console.log(res);// Mr Blue has a red house and a red car
Example: Seek substrings that matches a regular expression  and replace them with the value returned from a function.
replace-example3.js
var str = "Mr Blue has a blue house and a blue car";

function myfunc(subStr)  {
   return subStr.toUpperCase();
}

// Replace (g: Global/All, i: Ignore Case)
var res = str.replace(/blue|house|car/gi,  myfunc);

console.log(res); // Mr BLUE has a BLUE HOUSE and a BLUE CAR
 

str.search(searchValue)

Seek substring positions matching a regular expression. If a value is not found -1 will be returned. 
Parameter:
  • searchValue - a regular expression or a string. If it is a string, it will automatically be converted into a regular expression.
search-example.js
// g: Global/All, i: Ignore Case
var regex = /apples/gi;

var str = "Apples are round, and apples are juicy.";

let idx = str.search(regex);

console.log(idx); // 0

str.slice( beginIndex [, endIndex] )

The method returns a substring determined by the two positions such as  beginIndex and  endIndex. If the  beginIndex position is located on the right hand side and the  endIndex is located on the left hand side, the returned string is always empty.
slice-example.js
var str = "This is a String";

var result = str.slice(3, -2);

console.log(result);// s is a Stri

var result2 = str.slice(3);

console.log(result2);// s is a String

// IMPORTANT!!
var result3 = str.slice(5, 1); // ==> Empty String
console.log(result3);//

// IMPORTANT!!
var result4 = str.slice(5, -13); // ==> Empty String
console.log(result4);//
 

str.substr(start[, length])

substr-example.js
var str = "This is a String";

var result = str.substr(3, 8);

console.log(result);// s is a S

var result2 = str.substr(3);

console.log(result2);// s is a String

 

str.substring(beginIndex[, endIndex])

The method returns a substring defined by the two positions such as beginIndex and  endIndex.. Note: substring(a, b) & substring(b, a) will return the same result. 
substring-example.js
var str = "This is a String";

var result = str.substring(3, -2);

console.log(result);// s is a Stri

var result2 = str.substring(3);

console.log(result2);// s is a String

// IMPORTANT:
// result3 same as result4:
var result3 = str.substring(4, 1);
var result4 = str.substring(1, 4);

console.log(result3);// his
console.log(result4);// his

toLocaleLowerCase()

toLocaleLowerCase-example.js
let str = "This is a String";

var result = str.toLocaleLowerCase( );

console.log( result ); // this is a string

toLocaleupperCase()

toLocaleUpperCase-example.js
let str = "This is a String";

var result = str.toLocaleUpperCase( );

console.log( result ); // THIS IS A STRING

toLowerCase()

let str = "This is a String";

var result = str.toLowerCase( );

console.log( result ); // this is a string
 

toUpperCase()

toUpperCase-example.js
let str = "This is a String";

var result = str.toUpperCase( );

console.log( result ); // THIS IS A STRING

valueOf()

This method returns the String literal of a String object.
valueOf-example.js
let str = new String("This is a String");

console.log( str );// [String: 'This is a String']

let literal = str.valueOf();

console.log( literal );// This is a String

 

5- String Template

TODO

View more Tutorials: