2011-01-04 14 views

ответ

9

Это гораздо проще с регулярными выражениями

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

Дам вам отсчеты t в данной строке (игнорировать регистр).

Вы можете проверить его here.

Далее ссылка
RegExp 1
RegExp 2
String
String.match()

+0

лучшее решение. – Gere

2

Простое решение заключается в петле

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

Вы также можете использовать str.toLowerCase();, если вы не хотите быть чувствительны к регистру.

0

Несколько способов сделать это ...

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

использовать как:

NUMT = countChar ('Это некоторый текст', 'т');

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

Я думаю, что вы все делаете это более сложным, чем это должно быть. Используйте регулярное выражение. Это также нечувствительно к регистру. Если вам нужен регистр с регистром, удалите i после g.

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

Сделайте его короче.

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

Regex на самом деле довольно дорого, поэтому решение использовать раскол, вероятно, является самым быстрым решением предложил –

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

Если вы хотите считать вхождений всех букв, то лучше использовать одну петлю, как показано в других ответах.

+0

Это прекрасно, пока вы не переключаетесь на использование регулярного выражения для 'split()', где у вас возникнут проблемы с IE с двумя соседними совпадениями. –

+0

@Tim yep, это решение «не регулярное выражение», с использованием regex нет никакого смысла в split в любом случае. :) –

0

Может быть, может помочь вам здесь

.replace().length 

касаемо

Wazzy

Смежные вопросы