Salta el contingut

L'objecte String

Permet manipular cadenes de text.
Té una sola propietat (length) i diversos mètodes per operar sobre cadenes.

Tingueu en compte que...

El constructor d'objectes string no es sol utilitzar

let txt = new String("string");

és més eficient utilitzar-lo com a tipus de dades, i l'assignació crea l'objecte implícitament

let txt = "string";

String (MDN)

Longitud d'una cadena

La propietat length retorna el número de caràcters que conté una cadena:

str = "Cadena de text";
longitud = str.length; // 14

La longitud d'una cadena buida és 0.

Caracter individual a una posició donada

Podem retornar (només lectura) el caràcter que es troba en una posició donada amb el mètode charAt(posició):

str = "Cadena de text";
c = str.charAt(1); // "a"

També es pot utilitzar la notació d'array, on l'índex correspon al caràcter a retornar:

str = "Cadena de text";
c = str[1];          // "a"
"Cadena de text"[3]; // "e"

Recorda

Igual que passa amb els arrays, la posició del primer element dins d'una cadena és 0 i no 1.

Concatenar cadenes

El mètode concat() concatena els arguments que li passem a la cadena:

str = "Cadena de text";
c = str.concat("1234");         // "Cadena de text1234"
c = str.concat("abc", "def");   // "Cadena de textabcdef"

També podem utilitzar l'operador + per realitzar la mateixa operació:

str = "Cadena de text";
c = str + "1234";               // "Cadena de text1234"
c = "abc" + str + "def";        // "abcCadena de textdef"

Convertir a majúscules o minúscules

Els mètodes toUpperCase() i toLowerCase() converteixen respectivament una cadena a lletres majúscules o minúscules. Sempre converteixen la cadena sencera.

str = "Cadena de text";
str.toUpperCase(); // "CADENA DE TEXT"
str.toLowerCase(); // "cadena de text"

Cercar una subcadena

Posició des de l'inici

El mètode indexOf() retorna la posició de la primera ocurrència d'una subcadena dins d'una cadena començant a buscar des de l'inici.
Si no es troba, retorna el valor -1.

str = "Cadena de text";
str.indexOf("de"); //  2
str.indexOf("Ca"); //  0 (posició inicial)
str.indexOf("ca"); // -1 (no trobat)

Posició des del final

El mètode lastIndexOf() fa la mateixa funció que l'anterior, però començant a buscar des del final de la cadena.

str = "Cadena de text";
str.lastIndexOf("de"); // 7

Cerca sense repeticions

Podem combinar les dues cerques anteriors per poder determinar si una subcadena apareix una única vegada dins de la cadena principal:

if ( (str.indexOf(x) >=0 ) && ( str.indexOf(x) === str.lastIndexOf(x) ) ) {
    ...
}

Si les dues cerques retornen la mateixa posició i aquesta no és -1 (no trobat), sabem que la subcadena que estem cercant apareix únicament una vegada a la cadena principal.

Comprovar existència

El mètode includes() cerca una subcadena donada dins d'una cadena, i retorna un booleà indicant si la ha pogut trobar:

str = "Cadena de text";
str.includes("de"); // true
str.includes("ar"); // false

Comparació de majúscules i minúscules

Tots els mètodes anteriors distingeixen entre majúscules i minúscules.
Si volem fer la comparació sense fer-ne distinció, podem passar totes les cadenes a un sol format, per exemple tot a majúscules:

str.toUpperCase().indexOf("Text".toUpperCase()); // 10

Cerca i substitució

Amb el mètode replace() podem substituir la primera subcadena que estem cercant per una altra que indiquem com a paràmetre:

str = "Avui fa un bon dia";
str.replace("bon", "mal"); // "Avui fa un mal dia"
str.replace("a", "e");     // "Avui fe un bon dia"

Si volem substituir totes les coincidències i no només la primera, podem utilitzar el mètode replaceAll():

str = "Avui fa un bon dia";
str.replaceAll("a", "e");  // "Avui fe un bon die"

Extreure una subcadena

El mètode slice() retorna una cadena que conté els caràcters que es troben entre els indicats d'una altra cadena.
Rep 2 paràmetres:

  • el primer indica l'índex de la posició inicial
  • el segon indica l'índex de la posició final sense incloure'l
str = "Cadena de text";
str.slice(2,4); // "de"

Podem utilitzar índexos negatius per comptar des del final de la cadena:

str = "Cadena de text";
str.slice(4,-2);  // "na de te"
str.slice(-4,-1); // "tex"

El mètode substr()

El mètode substr() es manté al llenguatge per compatibilitat però està obsolet i es recomana no fer-lo servir.
Retorna una cadena a partir d'una posició inicial i d'una longitud de caràcters:

str = "Cadena de text";
str.substr(2,4); // "dena"

Dividir una cadena

El mètode split() divideix una cadena a partir d'un separador i retorna un array amb les subcadenes obtingudes:

str = "Cadena de text";
str.split(" ");  // [ "Cadena", "de", "text" ]
str.split("de"); // [ "Ca", "na ", " text"]

Omplir buits

Podem omplir una cadena amb un caràcter fins a un nombre donat de repeticions amb padStart() i padEnd().
El primer paràmetre indica el nombre d'elements fins a qual cal completar, i el segon amb quina cadena cal fer-ho:

str = "42";
str.padStart(5,"0"); // "00042"
str.padEnd(9,"/.");  // "42/./././"

Eliminar espais

Podem eliminar els espais sobrants d'una cadena amb:

  • trim(): elimina els espais en blanc que es trobin davant o darrera del text
  • trimStart(): elimina només els espais en blanc que es trobin davant del text
  • trimEnd(): elimina els espais en blanc que es trobin darrera del text
str = "  Hola bon dia!  ";
str.trim();      // "Hola bon dia!"
str.trimStart(); // "Hola bon dia!  "
str.trimEnd();   // "  Hola bon dia!"

Repetir una seqüència

Amb el mètode repeat() i indicant com a paràmetre el nombre de repeticions es retorna una cadena formada per les còpies indicades de la original:

str = "Hola! ";
str.repeat(3); // "Hola! Hola! Hola! "

Exemples

Validació de formularis

Verificació de contrasenya