Mai mult
Cum pentru a verifica dacă un șir conține un subșir în JavaScript?
De obicei, mi-ar aștepta un Șir de caractere.conține () metoda, dar nu't pare a fi unul.
Ceea ce este un mod rezonabil de a verifica acest lucru?
7430
3
ECMAScript 6 introdus
Șir de caractere.prototip.include
:"include" nu trebuie Internet Explorer suport, deși. Într-un ECMAScript 5 sau peste mediu,
Șir de caractere.prototip.indexOf
, care returnează -1 dacă nu găsesc subșirul, poate fi folosit în loc:Există un Șir de caractere.prototip.include în ES6:
Rețineți că această nu funcționează în Internet Explorer sau alte browsere vechi cu sau incomplete ES6 sprijin. Pentru a face să funcționeze în browserele vechi, ați putea dori să utilizați un transpiler ca Babel, un shim de bibliotecă, cum ar fi es6-shim, sau polyfill de MDN:
O altă alternativă este KMP (Knuth–Morris–Pratt).
KMP algoritm de căutări pentru o lungime-m subșir într-o lungime-n șir în cel mai rău caz O(n+m) de timp, comparativ cu un caz mai grav de O(n⋅m) pentru algoritm naiv, deci folosind KMP poate fi rezonabil dacă îți pasă cel mai rău caz complexitatea timp.
Aici's o punere în aplicare JavaScript de Proiect Nayuki, luate de la https://www.nayuki.io/res/knuth-morris-pratt-string-matching/kmp-string-matcher.js: