Anche le stringhe hanno un corrispondente oggetto predefinito che prevede metodi per la loro manipolazione e per la gestione delle stringhe
Come avviene per i numeri, JavaScript si occupa di effettuare automaticamente le opportune conversioni da primitivi ad oggetti e vicevera.
var x = new String("Stringa di testo");
| length | numero di caratteri che contiene una stringa |
La proprietà length indica il numero di caratteri di cui è composta una stringa inclusi gli spazi
var x = new String("Oggetto Stringa");
var y = x.length; // Totale 15 caratteri
Una stringa in Javascript è vista come un array di caratteri.
Esistono numerosi metodi per manipolarle.
| .charAt(n) | estrae il carattere dalla stringa in base all'indice indicato |
| .replace("stringa", "stringa") | sostituisce una stringa/parola con una nuova stringa/parola |
| .indexOf("stringa") | individua la prima occorrenza della stringa indicata sotto forma di indice |
| .lastIndexOf("stringa") | individua l'ultima occorrenza della stringa indicata sotto forma di indice |
| .substr(index, n) | estrae sottostringa indicano l'indice inziale ed il numero di caratteri da estrarre |
| .substring(index, lastIndex) | estrae sottostringa indicano l'indice inziale e l'indice finale |
| .slice(index, lastIndex) | simile a substring() ma con un comportamento particolare |
| .split("/") | suddivide la stringa in un array di sottostringhe; prevede diverse possibilità in base al/ai parametri passati |
| .toLowerCase() | trasforma la stringa tutta in minuscolo |
| .toUpperCase() | trasforma la stringa tutta in maiuscolo |
| .trim() | elimina gli spazi inziale e finale di una stringa |
| .startWith("stringa") | verifichiamo se una stringa inizia con la stringa indicata; restituisce true/false |
| .endsWith("stringa") | verifichiamo se una stringa termina con la stringa indicata; restituisce true/false |
Potrebbe essere necessario estrarre dei caratteri da una stringa, si pensi alla generazione di un codice fiscale.
var testo = "Stringa oggetto"; var caratteEstratto = x.charAt(2); // risultato "r"
Note: l'estrazione dei caratteri da una stringa è come l'estrazione di valori da un array e conseguenzialmente gli indici dei caratteri partiranno da 0; quindi, se indichi il ChartAt(2) in realtà stai indicando il terzo carattere.
Avremmo potuto scrivere le precedenti linee di codice in una forma contratta
var x = "Stringa oggetto".charAt(2);
Nella rappresentazione della stringa come array di caratteri avremmo poturto ottenere lo stesso risultato con la seguente istruzione:
var x = "Una stringa"[2];
Note: l’accesso ad un carattere tramite l’approccio ad array è in sola lettura. Quindi non è possibile modificare alcun valore.
Il metodo replace() prende due argomenti: la sottostringa da ricercare e la nuova stringa con cui sostituire la sottostringa.
var x = "Questa è una stringa"
var y = x.replace("stringa", "stringa modificata");
Da notare come il metodo replace() utilizzato come nell’esempio sostituisce soltanto la prima occorrenza della stringa. Nel caso in cui si fosse indicata soltanto la lettera "s" da sostituire, la "s" che sarebbe stata presa come riferimento da sostituire coinciderebbe con quella contenuta nella parola "Questa".
Note: una sottostringa è una porzione di una stringa Es. "Questa è una stringa", "Questa" è una sottostringa.
var testo = "Questa è una stringa, una stringa d'esempio";
var primaOccorenza = testo.indexOf("stringa");
//il risultato sarà 13
Il metodo restituisce la posizione della prima occorrenza, sotto forma di indice, della stringa passata come argomento. Se non viene individuata nessuna occorrenza indexOf() restituisce -1
var testo = "Questa è una stringa, una stringa d'esempio";
var primaOccorenza = testo.lastIndexOf("stringa");
//il risultato sarà 26
Per entrambi i metodi è possibile passare un secondo argomento che indica la posizione di partenza all’interno della stringa
var testo = "Questa è una stringa, una stringa d'esempio";
var primaOccorenza = testo.indexOf("stringa", 22);
// trova la prima occorrenza a partire dal carattere 22
// risultato 26
Aggiungendo un secondo argomento testo.indexOf("stringa", 22); abbiamo indicato di ricercare la prima-occorrenza a partire dal carattere 22.
Il metodo substr() ci consente di estrarre una sottostringa di un certo numero di caratteri a partire da una posizione.
In primo parametro indica l'indice index, il secondo, indica il numero di caratteri successivi da estrarre.
var testo = "Una nuova stringa"; var y = testo.substr(4, 5); // estraiamo "nuova"
Il metodo substring() estrae una sottostringa compresa tra due posizioni
espressi sotto forma di indice inziale e indice finale.
var testo = "Una nuova stringa"; var y = testo.substring(10, 17); // estraiamo "stinga"
Se il secondo argomento viene omesso JavaScript estrarrà tutti i caratteri fino alla fine della stringa.
var testo = "Una nuova stringa".substring(4); // estrae "nuova stringa"
Il metodo slice() è in buona sostanza molto simile a substring() ma presenta alcune differenze che elenchiamo:
var x = "Una nuova stringa".slice(4, 9);
Grazie al metodo .split() possiamo suddividere una stringa in un array di sottostringhe
var testo = "Una nuova stringa" var creaArray = testo.split();
| .split() | genera un array il cui unico elemento è l'intera stringa |
| .split("n"); | indicando un parametro separatore otterremo un array di elementi composto da sottostringhe il cui delimitatore e il parametro indicato |
| .split(""); | genera una array di tutti i caratteri di cui è composta la stinga |
| .split("", 5); | come prima, ma il secondo paramento indicato delimita il numero massimo di elementi dell'array |
"Una nuova stringa".split();
// Array con unico valore ["Una nuova stringa"]
"Una nuova stringa".split("n");
// Array ["U", "a ", "uova stri", "ga"]
"Una nuova stringa".split("");
// Array ["U", "n", "a", " ", "n", "u", "o", "v", "a", " ", "s", "t", "r", "i", "n", "g", "a"]
"Una nuova stringa".split("", 5);
// Array ["U", "n", "a", " ", "n"]
Trasformare le stringhe tutte in minuscolo o maiuscolo
var x = "Una nuova stringa".toLowerCase(); var y = "Una nuova stringa".toUpperCase(); // risultato x = "una nuova stringa" // risultato y = "UNA NUOVA STRINGA"
Il metodo trim() elimina gli spazi iniziali e finali di una stringa
var testo = " Questa è una Stringa con degli spazi iniziali e finali ".trim(); // risultato "Questa è una Stringa con degli spazi iniziali e finali";
Con i metodi startWith() e endsWith() verifichiamo rispettivamente se una stringa inizia o termina con un determinato valore
var testo = "Questa è una stringa di testo".startWith("Questa");
// risultato "true"
var testo = "Questa è una stringa di testo".endsWith("."); // risultato "false"
Per completezza segnaliamo i seguenti metodi, di recente introduzione, seppur limitati e poco utilizzati:
var x = "Una nuova stringa".anchor("test");
// risultato "<a name='test'>Una nuova stringa</a>"
var y = "Una nuova stringa".italics();
// risultato "<i>Una nuova stringa</i>"
var z = "Una nuova stringa".bold();
// risultato "<b>Una nuova stringa</b>