Habituellement, je m'attendrais à une String.contains()
méthode, mais il ne semble pas y en avoir une.
Quelle est une façon raisonnable de vérifier cela?
javascript
string
substring
string-matching
Peter O.
la source
la source
indexOf()
en est ainsi ...string.toUpperCase().includes(substring.toUpperCase())
/regexpattern/i.test(str)
-> i flag signifie insensibilité à la casseIl y a un
String.prototype.includes
dans ES6 :Notez que cela ne fonctionne pas dans Internet Explorer ou dans certains anciens navigateurs sans prise en charge ES6 inexistante ou incomplète. Pour le faire fonctionner dans les anciens navigateurs, vous pouvez utiliser un transpilateur comme Babel , une bibliothèque de shim comme es6-shim , ou ce polyfill de MDN :
la source
"potato".includes("to");
et exécutez-le via Babel."boot".includes("T")
estfalse
Une autre alternative est KMP (Knuth – Morris – Pratt).
L'algorithme KMP recherche une sous-chaîne de longueur m dans une chaîne de longueur n dans le pire des cas O ( n + m ), par rapport au pire des cas O ( n ⋅ m ) pour l'algorithme naïf, donc l'utilisation de KMP peut soyez raisonnable si vous vous souciez de la complexité du pire des cas.
Voici une implémentation JavaScript par Project Nayuki, tirée de https://www.nayuki.io/res/knuth-morris-pratt-string-matching/kmp-string-matcher.js :
la source