Le stringhe in JavaScript
Manipolazione di stringhe
Le stringhe sono tra i tipi di dato più utilizzati. In JavaScript offrono numerosi metodi che permettono di eseguire ricerche, sostituzioni, estrazioni di sottostringhe e trasformazioni del testo.
Concetti chiave
Le stringhe sono immutabili: ogni metodo restituisce una nuova stringa e si definiscono con apici singoli ', doppi " o backtick ` (template literal).
Esempio: creazione, lunghezza e accesso ai caratteri
let s1 = "Ciao";
let s2 = 'JavaScript';
let s3 = `Interpolazione: ${s1} ${s2}`; // template literal con ${}
// length e accessoconsole.log(s1.length); // 4 → numero di caratteri
console.log(s2[0]); // "J" → accesso per indice
console.log(s2.charAt(4)); // "S" → accesso con charAt
console.log(s3); // "Interpolazione: Ciao JavaScript"
Trasformazioni di base
Maiuscole/minuscole, spazi, padding e ripetizione
let frase = " Benvenuto in JavaScript ";
console.log(frase.toUpperCase()); // " BENVENUTO IN JAVASCRIPT "
console.log(frase.toLowerCase()); // " benvenuto in javascript "
console.log(frase.trim()); // "Benvenuto in JavaScript" → rimuove spazi ai bordi
console.log("7".padStart(3, "0")); // "007" → padding a sinistra
console.log("ok".repeat(3)); // "okokok" → ripetizione
Ricerca e verifica
indexOf, lastIndexOf, includes, startsWith, endsWith
let t = "Imparare JavaScript è divertente";
console.log(t.indexOf("Java")); // 9 → prima occorrenza
console.log(t.lastIndexOf("e")); // indice dell'ultima "e"
console.log(t.includes("divertente")); // true → presenza sottostringa
console.log(t.startsWith("Imparare")); // true → inizio
console.log(t.endsWith("te")); // true → fine
Sostituzione
replace vs replaceAll e uso base delle regex
let s = "rosso, Rosso, ROSSO";
// replace sostituisce solo la prima occorrenzaconsole.log(s.replace("rosso", "blu")); // "blu, Rosso, ROSSO"
// replaceAll sostituisce tutte le occorrenze esatteconsole.log(s.replaceAll("rosso", "verde")); // "verde, Rosso, ROSSO"
// regex con flag i (case-insensitive) e g (globale)console.log(s.replace(/rosso/gi, "giallo")); // "giallo, giallo, giallo"
Estrazione di sottostringhe
slice(inizio, fine)accetta indici negativi.substring(inizio, fine)scambia gli indici se invertiti e non accetta negativi.substrè obsoleto.
slice vs substring (con note sui negativi)
let w = "JavaScript";
console.log(w.slice(0, 4)); // "Java" → da 0 escluso 4
console.log(w.slice(-6)); // "Script" → indici negativi contano da destra
console.log(w.substring(4, 0)); // "Java" → scambia 4 e 0
// sconsigliato: substr(posizione, lunghezza)// console.log(w.substr(4, 6)); // "Script" (obsoleto)
Divisione e concatenazione
split, join (via array), concatenazione e template literal
let elenco = "pane,latte,uova";
let arr = elenco.split(","); // ["pane","latte","uova"]
console.log(arr.join(" - ")); // "pane - latte - uova" → unione con separatore
let nome = "Mario", cognome = "Rossi";
// concatenazione classicaconsole.log(nome + " " + cognome); // "Mario Rossi"
// template literal con variabiliconsole.log(`${nome} ${cognome}`); // "Mario Rossi"
Confronto locale e normalizzazione
localeCompare e normalize
let a = "caffè";
let b = "caffe";
// confronto secondo regole locali (accenti, ordine alfabetico)console.log(a.localeCompare(b, "it", {sensitivity: "base"})); // 0 => considerati uguali in "it"
// normalizzazione Unicode (utile per confronti binari coerenti)let n1 = a.normalize("NFC");
let n2 = b.normalize("NFC");
console.log(n1 === n2); // false → stringhe diverse a livello di codice
Tabella riassuntiva
| Metodo | Descrizione | Esempio sintetico |
|---|---|---|
| length | Lunghezza della stringa | "ciao".length → 4 |
| toUpperCase() / toLowerCase() | Maiuscolo/minuscolo | "Ok".toLowerCase() |
| trim() / trimStart() / trimEnd() | Rimuove spazi ai bordi | " c ".trim() |
| indexOf() / lastIndexOf() | Ricerca posizione | "abc".indexOf("b") |
| includes() / startsWith() / endsWith() | Presenza/inizio/fine | "test".includes("es") |
| replace() / replaceAll() | Sostituzione singola/tutte | s.replaceAll("a","-") |
| slice() / substring() | Estrazione porzioni | "abc".slice(-2) |
| split() | Divisione in array | "a,b".split(",") |
| padStart() / padEnd() | Padding a sinistra/destra | "7".padStart(3,"0") |
| repeat() | Ripetizione | "ha".repeat(3) |
| localeCompare() | Confronto locale | a.localeCompare(b,"it") |
| normalize() | Normalizza Unicode | s.normalize("NFC") |
Considerazioni
Le stringhe sono immutabili: ogni operazione produce una nuova stringa. Per concatenare preferisci i template literal quando inserisci variabili o espressioni.

IP: 216.73.216.214