Количество вхождений подстроки в NSString? - PullRequest
55 голосов
/ 30 января 2010

Как узнать, сколько раз строка NSString (например, @"cake") появляется в большей строке NSString (например, @"Cheesecake, apple cake, and cherry pie")?

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

Спасибо!

Ответы [ 13 ]

0 голосов
/ 25 октября 2013
-(IBAction)search:(id)sender{

  int  maincount = 0;
    for (int i=0; i<[self.txtfmainStr.text length]; i++) {
        char c =[self.substr.text characterAtIndex:0];
        char cMain =[self.txtfmainStr.text characterAtIndex:i];
        if (c == cMain) {
          int  k=i;
            int count=0;
            for (int j = 0; j<[self.substr.text length]; j++) {

                if (k ==[self.txtfmainStr.text length]) {
                    break;
                }

                if ([self.txtfmainStr.text characterAtIndex:k]==[self.substr.text characterAtIndex:j]) {

                    count++;
                }                

                if (count==[self.substr.text length]) {
                    maincount++;
                }

                k++;
            }


        }

        NSLog(@"%d",maincount);
    }

}
0 голосов
/ 02 мая 2010
for(int i =0;i<htmlsource1.length-search.length;i++){
  range = NSMakeRange(i,search.length);
  checker = [htmlsource1 substringWithRange:range];

  if ([search isEqualToString:checker]) {
   count++;

  }

 }
0 голосов
/ 30 января 2010

Нет встроенного метода. Я бы предложил вернуть c-строку и использовать общий алгоритм стиля c-string для подсчета подстрок ... если вам действительно нужно это быстро.

Если вы хотите остаться в Цели C, эта ссылка может помочь. Он описывает основной поиск подстроки для NSString. Если вы работаете с диапазонами, настраиваете и рассчитываете, то у вас будет «чистое» решение Objective C ... пусть и медленное.

...