如何计算NSString中NSString的数量

时间:2010-12-25 17:42:18

标签: iphone objective-c nsstring count

您好我尝试将目标-c中的java函数转换为iphone

爪哇:

    public int substrCount(String str, String needle) {
    int count = 0;
    int index = -needle.length();
    while ((index = str.indexOf(needle, index + needle.length())) != -1) {
        count++;
    }
    return count;
}

iPhone:

-(int)substrCount:(NSString *) str withSearch:(NSString *) needle
{
  NSRange lastIndex;
  lastIndex.length = [str length];
  NSInteger count =0;

  while(lastIndex.length != -1){
    lastIndex = [str rangeOfString:needle options:NSCaseInsensitiveSearch range:lastIndex];
    //lastIndex = str.indexOf(needle,lastIndex);

    if( lastIndex.length != -1){
        NSLog(@"+1");
        count ++;
    }
  }
}

但它太难了,我不知道什么时候可以做到。

也许存在更好的解决方案?我没找到任何东西:/

抱歉我的英文不好!

1 个答案:

答案 0 :(得分:1)

我可能永远不会在生产中编写此代码,但您可以简单地问:

[[str1 componentsSeparatedByString:str2] count] - 1;

该表达式的结果将是一个整数,表示在str2中找到str1的次数。

但是,代码的问题是rangeOfString:如果找不到子字符串,则返回NSNotFound,而不是-1