|
|
|
| добрый вечер.
есть массив слов.
есть строке .
нужно узнать сколько всего раз встречаются слова из массива в строке.
Пример:
var msg="test gerglkj set test set test";
var stringsArr=['test','set'];
alert(check(msg,stringsArr));
в рез-те, функция check должна вернуть число 5: в строке msg 3 раза встречается слово "test" и 2 раза - слово "set"
|
надеюсь, объяснил понятно.
заранее спасибо. | |
|
|
|
|
|
|
|
для: roma
(12.07.2009 в 20:03)
| |
<script>
// эта функция не моя, попалась где то..
function substr_count(haystack, needle, offset, length){
var pos = 0, cnt = 0;
if(isNaN(offset)) offset = 0;
if(isNaN(length)) length = 0;
offset--;
while((offset = haystack.indexOf(needle, offset+1)) != -1){
if(length > 0 && (offset+needle.length) > length){
return false;
}else{
cnt++;
}
}
return cnt;
}
function check(msg, stringsArr){
for(var i=0, len=stringsArr.length, n=0, count=0; i < len; i++){
count = substr_count(msg, stringsArr[i]);
if(count) n += count;
}
return n;
}
var msg = "test gerglkj set test set test";
var stringsArr = ['test','fff','set','rrrrr'];
alert(check(msg, stringsArr));
</script>
|
| |
|
|
|
|
|
|
|
для: mikha
(13.07.2009 в 07:49)
| | спасибо | |
|
|
|
|
|
|
|
для: roma
(12.07.2009 в 20:03)
| | сделал другой вариант, может кому-то пригодится
var count=0;var res="";
var msg='test jaergk ajelrgkaejr lgakerjg mail gmail mail, alrejalekjr test testa potest test.';
var words=["test","mail"];
for(var i in words){
var reg=new RegExp("\\b"+words[i]+"\\b","g");
while((myarr=reg.exec(msg))!=null){count++;}
}
alert("found: "+count);//5
|
| |
|
|
|