HOWTO · JavaScript

Controlla se una stringa contiene sottostringa in JavaScript

Questo tutorial insegna come verificare se una data sottostringa è presente all'interno di una stringa in JavaScript

In questa pagina

Questo tutorial insegna come verificare se una stringa contiene una sottostringa in JavaScript.

È un compito semplice e comune, ma lingue diverse lo gestiscono in modi diversi. Vedremo i metodi incorporati in JavaScript e metodi scritti su misura per raggiungere l’obiettivo di cui sopra.

Usa l’espressione regolare per verificare se una stringa contiene una sottostringa in JavaScript

È uno dei metodi più potenti e tradizionali per verificare la presenza di una sottostringa. Ci offre molta flessibilità rispetto ai metodi incorporati perché con i metodi incorporati di JavaScript, possiamo solo controllare una stringa costante e non possiamo modificare la distinzione tra maiuscole e minuscole del loro comportamento. Useremo il metodo RegExp.test() per verificare la presenza di sottostringhe in una stringa.

let str = 'delftstack';
console.log(/stack/.test(str));

Produzione:

true

Qui usiamo la funzione .test() per vedere se la sottostringa stack è presente all’interno della stringa delftstack e ottenere come risultato true.

Ma la bellezza delle espressioni regolari sta nel fatto che possiamo fare ricerche senza distinzione tra maiuscole e minuscole, cosa non possibile con i metodi JavaScript incorporati, e possiamo persino cercare modelli come una sottostringa numerica di lunghezza fissa senza nemmeno sapere cosa sia.

let str = 'delftstack';
console.log(stack / i.test(str));

Produzione:

true

Aggiungiamo i all’espressione /stack/ e possiamo eseguire la ricerca senza distinzione tra maiuscole e minuscole.

Usa String.includes() per verificare se una stringa contiene sottostringa in JavaScript

ES6 ha introdotto la funzione .includes() che ci aiuta a controllare se una data sottostringa è presente all’interno della stringa. Restituisce un valore booleano che indica la presenza con true o false. È un metodo che distingue tra maiuscole e minuscole, e quindi se la sottostringa S viene confrontata con s, restituirà false.

Questo metodo richiede 2 argomenti: il primo è la sottostringa e il secondo è l’indice da cui si vuole iniziare la ricerca all’interno della stringa. Se il secondo argomento è fuori dal limite sinistro, cioè è minore di 0, JavaScript avvia la ricerca dall’indice 0. Se è maggiore della lunghezza della stringa, restituisce direttamente false.

const str = 'delftstack';
const substr = 'stack';
console.log(str.includes(substr));

Produzione:

true

Nel codice precedente, passiamo la sottostringa alla funzione, che restituisce true poiché stack è presente all’interno della stringa delftstack.

const str = 'delftstack';
const substr = 'stack';
console.log(str.includes(substr, 4));

Produzione:

true

Questo codice avvia la ricerca della parola stack dal indice.

Usa String.indexOf() per verificare se una stringa contiene sottostringa in JavaScript

Prima che ES6 introducesse il metodo String.includes(), l’unico metodo integrato era .indexOf(). È abbastanza simile al metodo String.includes(). Invece di restituire un valore booleano, questo metodo restituisce l’indice del primo carattere della sottostringa se la sottostringa è presente all’interno della stringa data e -1 se la sottostringa non è presente.

const str = 'delftstack';
const substr = 'stack';
console.log(str.indexOf(substr) != -1);

Produzione:

true

Potrebbe essere vecchio ma questo è più preciso in quanto può essere usato come .includes() semplicemente aggiungendo un segno di spunta al risultato della funzione per vedere se non è uguale a -1. A differenza di .includes(), ci restituisce l’indice esatto dell’inizio della sottostringa e può essere di importanza molto più pratica.

Tutti i metodi precedenti eccetto String.includes() sono supportati da tutti i principali browser. String.includes() è stato introdotto da ES6 e non è ancora supportato da Internet Explorer. Un altro metodo per farlo sarà quello di utilizzare l’algoritmo KMP (Knuth-Morris-Pratt), un algoritmo O(n) con estese applicazioni. È un argomento enorme in sé, e ne parleremo in un prossimo post.