W3docs

Stringhe JavaScript

In JavaScript, le stringhe servono per memorizzare e manipolare testo. Impara a crearle, usarle e confrontarle.

In JavaScript, le stringhe vengono utilizzate per memorizzare e manipolare testo. A differenza di alcuni altri linguaggi, JavaScript non ha un tipo separato per un singolo carattere — un carattere è semplicemente una string di lunghezza 1. Il formato interno di ogni string è sempre UTF-16, motivo per cui ogni carattere è associato a un codice numerico (maggiori dettagli più avanti).

Una string rappresenta zero o più caratteri scritti tra virgolette. Le stringhe sono uno dei tipi di dati primitivi di JavaScript, ma espongono molti metodi utili — vedi metodi dei primitivi per capire perché un tipo primitivo può avere metodi.

In questa pagina imparerai come creare stringhe (con virgolette singole, doppie e backtick), usare caratteri speciali, leggere la lunghezza di una string, accedere ai singoli caratteri, estrarre sottostringhe, cambiare il case, cercare all'interno di una string e confrontare stringhe correttamente.

Funzioni String più comuni

FunzioneDescrizione
charAt(index)Restituisce il carattere all'indice specificato.
charCodeAt(index)Restituisce il codice Unicode del carattere all'indice specificato.
concat(...strings)Concatena gli argomenti string alla string chiamante e restituisce una nuova string.
includes(searchString, position)Determina se la string chiamante contiene searchString.
indexOf(searchValue, fromIndex)Restituisce l'indice della prima occorrenza di searchValue nella string, iniziando la ricerca da fromIndex. Restituisce -1 se il valore non viene trovato.
lastIndexOf(searchValue, fromIndex)Restituisce l'indice dell'ultima occorrenza di searchValue nella string chiamante, cercando all'indietro da fromIndex. Restituisce -1 se il valore non viene trovato.
match(regexp)Recupera le corrispondenze quando si fa combaciare una string con un'espressione regolare.
matchAll(regexp)Restituisce un iteratore di tutti i risultati che corrispondono a una string rispetto a un'espressione regolare, inclusi i gruppi di cattura.
repeat(count)Restituisce una nuova string composta dalla string chiamante ripetuta count volte.
replace(searchFor, replaceWith)Sostituisce la prima corrispondenza di una sottostringa o pattern con una string di sostituzione.
replaceAll(searchFor, replaceWith)Sostituisce tutte le corrispondenze di una sottostringa o pattern con una string di sostituzione.
search(regexp)Cerca nella string una corrispondenza con un'espressione regolare e restituisce l'indice della corrispondenza.
slice(startIndex, endIndex)Estrae una sezione di una string e la restituisce come nuova string, senza modificare la string originale.
split(separator, limit)Divide una string in un elenco ordinato di sottostringhe, inserisce queste sottostringhe in un array e restituisce l'array. La divisione viene effettuata cercando un pattern; il pattern è fornito come primo parametro nella chiamata al metodo.
startsWith(searchString, position)Determina se la string chiamante inizia con i caratteri di searchString.
substring(startIndex, endIndex)Restituisce la parte della string compresa tra gli indici di inizio e fine, o fino alla fine della string.
toLowerCase()Restituisce il valore della string chiamante convertito in minuscolo.
toUpperCase()Restituisce il valore della string chiamante convertito in maiuscolo.
trim()Rimuove gli spazi bianchi da entrambe le estremità della string.
trimStart() o trimLeft()Rimuove gli spazi bianchi dall'inizio della string.
trimEnd() o trimRight()Rimuove gli spazi bianchi dalla fine della string.
valueOf()Restituisce il valore primitivo di un oggetto String.

Le virgolette

JavaScript offre tre modi per racchiudere una string: virgolette singole, virgolette doppie e backtick:

let single = 'single-quoted';
let double = "double-quoted";
let backticks = `backticks`;

Le virgolette singole e doppie si comportano in modo identico — scegli uno stile e mantienilo. I backtick sono diversi: supportano i template literal, consentendo di incorporare qualsiasi espressione direttamente nella string racchiudendola in ${…}:

javascript— editable

L'espressione all'interno di ${…} può essere qualsiasi cosa — una variabile, un calcolo o una chiamata a funzione:

javascript— editable

Un altro vantaggio chiave dei backtick è che permettono a una string di estendersi su più righe:

javascript— editable

Le virgolette singole e doppie non possono estendersi su più righe da sole. Inserire un'interruzione di riga grezza al loro interno è un errore di sintassi:

let guestList = "Guests: // SyntaxError: Invalid or unexpected token
* John ";

Le virgolette singole e doppie sono precedenti ai backtick, quindi i backtick sono la scelta più moderna e potente.

Puoi anche inserire una "funzione template" (un tagged template) prima del primo backtick:

func`string`;

La funzione func viene chiamata automaticamente e riceve le parti letterali della string insieme alle espressioni incorporate, in modo da poterle elaborare. È così che le librerie implementano template personalizzati, ma nel codice quotidiano è raramente necessario.

Caratteri speciali

Puoi creare output su più righe da stringhe con virgolette singole o doppie con l'aiuto di \n (il carattere di nuova riga), in questo modo:

javascript— editable

Esistono altri caratteri speciali meno comuni.

Ecco alcuni di essi nell'elenco seguente:

  • \', \" questi caratteri speciali vengono usati per le virgolette
  • \r - ritorno a capo. Questo carattere viene ora usato da solo. Una combinazione di due caratteri \r\n viene usata per rappresentare un'interruzione di riga nei file di testo Windows.
  • \\ - barra rovesciata
  • \t - tabulazione
  • \xXX - carattere unicode con un particolare codice unicode esadecimale XX
  • \uXXXX - simbolo unicode con il codice esadecimale XXXX nella codifica UTF-16. Deve includere esattamente 4 cifre.

Ecco esempi con escape Unicode:

javascript— editable

Ogni carattere speciale inizia con una barra rovesciata, ed è per questo che la barra rovesciata è chiamata anche carattere di escape. Puoi usarla per inserire una virgoletta corrispondente all'interno di una string:

javascript— editable

La barra rovesciata esiste solo per dire a JavaScript come leggere il codice sorgente — scompare una volta creata la string, quindi non viene memorizzata. Quando hai effettivamente bisogno di una barra rovesciata nella string, raddoppiala:

javascript— editable

La lunghezza della string

La proprietà length ti fornisce il numero di caratteri in una string:

javascript— editable

Nota che \n è un singolo carattere speciale, quindi la lunghezza è 7 (W3Docs più una nuova riga), non 8.

Un errore comune è chiamare str.length() invece di leggere str.length. length è una proprietà, non un metodo — aggiungere () genera un errore "not a function".

Accesso ai caratteri

Le parentesi quadre [pos] sono il modo comune per ottenere il carattere a una determinata posizione. Puoi anche chiamare il metodo str.charAt(pos). Le posizioni sono zero-based, quindi il primo carattere si trova all'indice 0:

javascript— editable

Una differenza: se non esiste alcun carattere alla posizione, str[pos] restituisce undefined mentre str.charAt(pos) restituisce una string vuota ''. Il codice moderno preferisce generalmente le parentesi quadre; charAt è raramente usato oggi.

Le stringhe sono immutabili

Le stringhe in JavaScript sono immutabili — non puoi modificare un carattere nel posto. L'assegnazione seguente fallisce silenziosamente (in strict mode genera un'eccezione), quindi il carattere originale rimane invariato:

javascript— editable

Invece, costruisci una nuova string completa e assegnala alla variabile:

javascript— editable

Cambiare il case

Due metodi cambiano il case di un'intera string — toUpperCase() e toLowerCase():

javascript— editable

Per convertire in minuscolo solo un singolo carattere, prima indicizza la string, poi chiama il metodo su quel carattere:

javascript— editable

Cercare una sottostringa

Esistono diversi modi per cercare una sottostringa all'interno di una string.

str.indexOf

str.indexOf(substr, pos) cerca substr all'interno di str, opzionalmente iniziando dalla posizione pos. Restituisce l'indice della prima corrispondenza, o -1 se non c'è corrispondenza:

javascript— editable

str.lastIndexOf

str.lastIndexOf(substr, pos) funziona come indexOf, ma cerca dalla fine della string verso l'inizio, restituendo l'indice dell'ultima corrispondenza.

Un errore comune: non usare indexOf direttamente in un test if. Poiché una corrispondenza alla posizione 0 è falsy, questo sembra corretto ma è sbagliato:

javascript— editable

Confronta sempre con -1 invece:

javascript— editable

includes, startsWith, endsWith

Il più moderno str.includes(substr, pos) restituisce true o false a seconda che str contenga substr. Usalo quando hai solo bisogno di sapere se esiste una corrispondenza, non dove:

javascript— editable

Il suo secondo argomento opzionale è la posizione da cui iniziare la ricerca:

javascript— editable

str.startsWith(substr) e str.endsWith(substr) sono strettamente correlati — testano rispettivamente l'inizio e la fine della string:

javascript— editable

Ottenere una sottostringa

JavaScript ha tre metodi per ottenere una sottostringa: slice, substring e substr. Nel codice moderno, slice è quello raccomandato — è il più flessibile e substr è considerato legacy.

str.slice(start, end)

slice restituisce la parte della string da start fino a (ma non includendo) end:

javascript— editable

Se il secondo argomento è omesso, slice procede fino alla fine della string:

javascript— editable

Puoi anche usare valori negativi, che contano dalla fine:

javascript— editable

str.substring(start, end)

substring restituisce la parte della string compresa tra start e end. È molto simile a slice, con una differenza notevole: se start è maggiore di end, substring scambia i due argomenti, mentre slice restituisce una string vuota. Tratta anche gli argomenti negativi come 0:

javascript— editable

str.substr(start, length)

substr restituisce la parte della string a partire da start con una determinata length. A differenza degli altri, il suo secondo argomento è una lunghezza, non una posizione finale. Questo metodo è legacy — preferisci slice nel nuovo codice.

javascript— editable

Un start negativo conta dalla fine:

javascript— editable

Confronto di stringhe

Gli operatori <, >, <= e >= confrontano le stringhe carattere per carattere, usando il codice Unicode di ogni carattere (vedi operatori di confronto per le regole generali). Due conseguenze sorprendono spesso i nuovi sviluppatori:

  1. Una lettera minuscola è "maggiore" di una maiuscola, perché le lettere minuscole hanno codici più alti:
javascript— editable
  1. Le lettere con segni diacritici si ordinano "fuori ordine" — si trovano al di fuori dell'intervallo A–Z di base, quindi vengono confrontate come maggiori:
javascript— editable

Per questo motivo, gli operatori di confronto vanno bene per ordinare strettamente per codice, ma non per un ordine alfabetico leggibile dall'utente. Per un confronto che rispetti le impostazioni locali, usa str.localeCompare(other), che restituisce un numero negativo, 0 o un numero positivo:

javascript— editable

Caratteri e i loro codici

Poiché le stringhe sono UTF-16, ogni carattere ha un codice numerico. str.codePointAt(pos) restituisce il codice del carattere alla posizione pos:

javascript— editable

String.fromCodePoint(code) fa l'operazione inversa — costruisce un carattere da un codice numerico:

javascript— editable

Puoi anche inserire un carattere tramite il suo codice in un letterale string usando \u seguito dal codice esadecimale:

javascript— editable

Come esempio più completo, ecco una string costruita dai caratteri con codici da 65 a 220:

javascript— editable

Le lettere maiuscole vengono prima, poi alcuni caratteri speciali, e l'output termina intorno a Ö.

Argomenti correlati

Esercitazione

Pratica
Quali sono alcune caratteristiche o funzioni delle stringhe in JavaScript descritte nell'articolo?
Quali sono alcune caratteristiche o funzioni delle stringhe in JavaScript descritte nell'articolo?
Was this page helpful?