Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: количество совпадений
 
 автор: roma   (12.07.2009 в 20:03)   письмо автору
 
 

добрый вечер.
есть массив слов.
есть строке .
нужно узнать сколько всего раз встречаются слова из массива в строке.
Пример:

var msg="test gerglkj set test set test";
var stringsArr=['test','set'];
alert(check(msg,stringsArr));
в рез-те, функция check должна вернуть число 5: в строке msg 3 раза встречается слово "test" и 2 раза - слово "set"

надеюсь, объяснил понятно.
заранее спасибо.

  Ответить  
 
 автор: mikha   (13.07.2009 в 07:49)   письмо автору
 
   для: 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>

  Ответить  
 
 автор: Roma   (13.07.2009 в 13:29)   письмо автору
 
   для: mikha   (13.07.2009 в 07:49)
 

спасибо

  Ответить  
 
 автор: Roma   (13.07.2009 в 15:39)   письмо автору
 
   для: 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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования