2017-11-05 2 views
1

Ich habe eine Zeichenfolge caaab. Ich möchte die Gesamtzahl der Vorkommen von Muster aa in dieser Zeichenfolge zählen. Es sollte zwei sein.Zählen der Gesamtzahl der Vorkommen von Muster in der Zeichenfolge

[c**aa**ab] 
[ca**aa**b] 

ich (caaab'.match(/aa/g)||[]).length verwende, aber es ist nur 1 nicht 2 zurück.

Wie dies in Javascript zu tun. Irgendeine Lösungsmöglichkeit.

+1

Was haben Sie versucht? –

Antwort

1

Sie könnten einen positiven Blick für die Übereinstimmung werfen, weil es keinen fehlenden Schritt konsumiert.

console.log(('caaab'.match(/a(?=a)/g) || []).length);

+0

Sie könnten auch einen positiven Blick hinter '(? <= Aa)' –

+2

@ S.Walker verwenden, eigentlich nicht in Javascript, weil es nicht implementiert ist. –

+0

Javascript unterstützt keinen positiven Blick hinter sich? –

0

Der schwierige Teil ist die Überlappung in Mustern.

Wenn das Muster zu suchen eine feste Schnur, kein regulärer Ausdruck ist, dann können Sie indexOf wiederholt aufrufen, nach jedem Spiel den Startindex zu aktualisieren.

var count = function (s, t) { 
    var count = 0, index = 0; 
    while (true) { 
    index = s.indexOf(t, index); 
    if (index === -1) break; 
    count++; 
    index++; 
    } 
    return count; 
} 

Mit dieser Implementierung wird count('caaab', 'aa') 2. Rückkehr

Verwandte Themen