Bir dizginin JavaScript'te bir alt dize i├žerip i├žermedi─čini kontrol etme


Al─▒nan cevaba git


Genellikle bir String.contains() y├Ântem beklerdim , ancak bir y├Ântem g├Âr├╝nm├╝yor.

Bunu kontrol etmenin makul bir yolu nedir?


7431









Cevap say─▒s─▒n─▒ say: 3






ES6 tan─▒t─▒ld─▒ String.prototype.includes :

 var string = "foo",
    substring = "oo";

console.log(string.includes(substring)); 

includes IE deste─či yok olsa da. Alt String.prototype.indexOf dizeyi bulamad─▒─č─▒nda Ôłĺ1 d├Ând├╝ren ES5 veya daha eski bir ortamda bunun yerine kullan─▒labilir:

 var string = "foo",
    substring = "oo";

console.log(string.indexOf(substring) !== -1); 


13201







String.prototype.includes ES6'da bir tane var :

 "potato".includes("to");
> true
 

Bunun Internet Explorer'da veya ES6 deste─či olmayan veya tamamlanmam─▒┼č baz─▒ eski taray─▒c─▒larda ├žal─▒┼čmad─▒─č─▒n─▒ unutmay─▒n. Eski taray─▒c─▒larda ├žal─▒┼čmas─▒n─▒ sa─člamak i├žin Babel gibi bir transpiler , es6- shim gibi bir shim k├╝t├╝phanesi veya MDN'den bu polyfill kullanmak isteyebilirsiniz :

 if (!String.prototype.includes) {
  String.prototype.includes = function(search, start) {
    'use strict';
    if (typeof start !== 'number') {
      start = 0;
    }

    if (start + search.length > this.length) {
      return false;
    } else {
      return this.indexOf(search, start) !== -1;
    }
  };
}
 

491







Ba┼čka bir alternatif KMP'dir .

Bir Boy-KMP algoritmas─▒ arama m bir uzunluk- i├žinde substring n dize en k├Ât├╝ durum O ( n + m, O (bir en k├Ât├╝ duruma k─▒yasla) zaman, n, Ôőů m saf algoritmas─▒ i├žin), bu y├╝zden KMP olabilir kullan─▒larak En k├Ât├╝ durum zaman karma┼č─▒kl─▒─č─▒na ├Ânem veriyorsan─▒z makul.

─░┼čte Project Nayuki'nin https://www.nayuki.io/res/knuth-morris-pratt-string-matching/kmp-string-matcher.js adresinden al─▒nan bir JavaScript uygulamas─▒ :

 // Searches for the given pattern string in the given text string using the Knuth-Morris-Pratt string matching algorithm.
// If the pattern is found, this returns the index of the start of the earliest match in 'text'. Otherwise -1 is returned.
 

 function kmpSearch(pattern, text) {
  if (pattern.length == 0)
    return 0; // Immediate match

  // Compute longest suffix-prefix table
  var lsp = [0]; // Base case
  for (var i = 1; i < pattern.length; i++) {
    var j = lsp[i - 1]; // Start by assuming we're extending the previous LSP
    while (j > 0 && pattern.charAt(i) != pattern.charAt(j))
      j = lsp[j - 1];
    if (pattern.charAt(i) == pattern.charAt(j))
      j++;
    lsp.push(j);
  }

  // Walk through text string
  var j = 0; // Number of chars matched in pattern
  for (var i = 0; i < text.length; i++) {
    while (j > 0 && text.charAt(i) != pattern.charAt(j))
      j = lsp[j - 1]; // Fall back in the pattern
    if (text.charAt(i) == pattern.charAt(j)) {
      j++; // Next char matched, increment position
      if (j == pattern.length)
        return i - (j - 1);
    }
  }
  return -1; // Not found
}

console.log(kmpSearch('ays', 'haystack') != -1) // true
console.log(kmpSearch('asdf', 'haystack') != -1) // false 


20



─░lgili yay─▒nlar


Dize alt dize i├žerip i├žermedi─čini nas─▒l kontrol edebilirim? [├žift]

JavaScript'te tan─▒mlanmam─▒┼č bir de─či┼čken nas─▒l kontrol edilir

Bir dize Ruby'de bir alt dize i├žerip i├žermedi─čini kontrol etme?

Bir dize kontrol etmenin en h─▒zl─▒ yolu, JavaScriptÔÇÖte ba┼čka bir alt dize i├žeriyor mu?

Belirli bir dize Java'da ge├žerli bir JSON olup olmad─▒─č─▒n─▒ kontrol etme

NSDictionary - S├Âzl├╝─č├╝n anahtar / de─čer ├žiftini i├žerip i├žermedi─čini kontrol etmeniz gerekir

Java'da bo┼č bir dize nas─▒l kontrol edilir?

Enum listesinde dize de─čeri olup olmad─▒─č─▒n─▒ kontrol nas─▒l?

Bir String'in Scala'daki bir Regex ile tamamen e┼čle┼čip e┼čle┼čmedi─čini nas─▒l kontrol edebilirim?

HashSet <string> .Contains () y├Ântemi b├╝y├╝k / k├╝├ž├╝k harf duyarl─▒ modda nas─▒l kullan─▒l─▒r?

Etiketle ilgili di─čer sorular [javascript]


'Varl─▒klar' klas├Âr├╝n├╝ Android Studio'da nereye yerle┼čtirebilirim?

Rails Authenticity Token'─▒ Anlamak

Bir ba─člant─▒ya div yap─▒n

CSS kullanarak arka plan g├Âr├╝nt├╝s├╝n├╝ sa─čdan ofsetleme

MySQLDump'─▒ Tablolar─▒ Kilitlemeden ├çal─▒┼čt─▒r

Go'da bir dosyan─▒n olup olmad─▒─č─▒n─▒ nas─▒l kontrol edebilirim?

JavaScript'teki Hatay─▒ uzatman─▒n iyi bir yolu nedir?

'For' d├Âng├╝s├╝n├╝ kullanarak dizindeki t├╝m dosyalar─▒ yineleyin

Arka planda i┼č par├žac─▒─č─▒ h─▒zl─▒ bir ┼čekilde nas─▒l kullan─▒l─▒r?

AngularJs: Dosya giri┼č alanlar─▒ndaki de─či┼čiklikler nas─▒l kontrol edilir?