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 texttrimStart()
: elimina només els espais en blanc que es trobin davant del texttrimEnd()
: 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! "