2011-01-04 9 views

Antwort

9

Es ist viel einfacher, mit regex

var regex = new RegExp("t", "gi") 
var count = "This is some text".match(regex).length; 

Werden Sie zählt von t in dem gegebenen String (ignorieren Fall) geben.

Sie können es here testen.

Weitere Referenz
RegExp 1
RegExp 2
String
String.match()

+0

bessere Lösung. – Gere

2

Eine einfache Lösung ist eine Schleife

var count = 0; 
for(var i = 0; i < str.length; i ++) { 
    if(str.charAt(i) === 't') 
    ++count; 
} 

Sie auch str.toLowerCase(); verwenden möchten, wenn Sie Groß- und Kleinschreibung nicht sein wollen.

0

Mehrere Möglichkeiten, dies zu tun ...

function countChar(str, searchChar) { 
    var num=0; 
    for (var i=0; i<str.length; ++i) { 
     if (str[i] == searchChar) 
     ++num; 
    } 
    return num; 
} 

Verwendung wie:

NUMT = countChar ('Dies ist ein Text', 't');

0
<button onclick="alert(countCharacter('abcdea', 'a'));"> Test! </button> 

<script type="text/javascript"> 
    function countCharacter(sample, characterToFind) { 
     var result = 0; 

     for(i = 0;i<sample.length;i++) { 
      if(sample[i] === characterToFind) { 
       result++; 
      } 
     } 

     return result; 
    } 
</script> 
1

Ich denke, Sie alle machen es komplizierter als es sein muss. Verwenden Sie Regex. Dies ist ebenfalls nicht der Fall. Wenn Sie die Groß-/Kleinschreibung beachten möchten, entfernen Sie das i nach g.

var str = "This is some text"; 
var pattern = /t/gi; 
alert(str.match(pattern).length); 

Machen Sie es kürzer.

var str = "This is some text"; 
alert(str.match(/t/gi).length); 
+0

Regex eigentlich ziemlich teuer ist, so dass die Lösung Split zu verwenden, ist wahrscheinlich die schnellste Lösung vorgeschlagen –

4
var sValue = 'This is some text'; 
var tCount = sValue.split("t").length - 1; 
alert("t appears " + tCount + " times"); 

Wenn Sie Vorkommen aller Briefe zählen möchten, besser Sie eine Schleife verwenden, wie in den anderen Antworten gezeigt.

+0

Dies ist in Ordnung, solange Sie nicht zu einem Regex für die 'split()', wo Sie Probleme mit zwei benachbarten Übereinstimmungen in IE beginnen würde. –

+0

@Tim yep, diese ist "non regex" Lösung, mit regex gibt es keinen Punkt in Split sowieso. :) –

0

Kann sein, können Sie sich hier helfen

.replace().length 

in Bezug

Wazzy

Verwandte Themen