Controlla se una stringa contiene sottostringa in JavaScript
- Usa l’espressione regolare per verificare se una stringa contiene una sottostringa in JavaScript
-
Usa
String.includes()per verificare se una stringa contiene sottostringa in JavaScript -
Usa
String.indexOf()per verificare 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 5° 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 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