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