Controlla se una stringa contiene sottostringa in JavaScript

Harshit Jindal 12 ottobre 2023
  1. Usa l’espressione regolare per verificare se una stringa contiene una sottostringa in JavaScript
  2. Usa String.includes() per verificare se una stringa contiene sottostringa in JavaScript
  3. Usa String.indexOf() per verificare se una stringa contiene sottostringa in JavaScript
Controlla se una stringa contiene sottostringa in JavaScript

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.

Harshit Jindal avatar Harshit Jindal avatar

Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.

LinkedIn

Articolo correlato - JavaScript String