【问题标题】:Character occurrences in a String Objective C字符串目标 C 中的字符出现
【发布时间】:2012-05-14 13:25:21
【问题描述】:

如何计算字符串中某个字符的出现次数?

例子

字符串:123-456-7890

我想在给定的字符串中找到“-”的出现次数

【问题讨论】:

标签: iphone objective-c ipad nsstring


【解决方案1】:

你可以这样做:

NSString *string = @"123-456-7890";
int times = [[string componentsSeparatedByString:@"-"] count]-1;

NSLog(@"Counted times: %i", times);

输出:

Counted times: 2

【讨论】:

  • 它也是查找字符串中出现了多少个空格的最佳代码。 . .
  • 如果字符串以'-'开头怎么办?
  • @Oscar 它仍然可以工作,我刚刚测试过。你自己试过吗?
  • @hfossli,你错了,它会分别返回 4 和 2。
  • @Cœur 你是绝对正确的!在我看来很疯狂。 gist.github.com/hfossli/4c76a96b34574cb938ce
【解决方案2】:

这样就可以了,

int numberOfOccurences = [[theString componentsSeparatedByString:@"-"] count];

【讨论】:

    【解决方案3】:

    这是我为你做的。试试这个。

    unichar findC;
    int count = 0;
    NSString *strr = @"123-456-7890";
    
    for (int i = 0; i<strr.length; i++) {
        findC = [strr characterAtIndex:i];
        if (findC == '-'){
            count++;
        }
    }
    
    NSLog(@"%d",count);
    

    【讨论】:

      【解决方案4】:
      int total = 0;
      NSString *str = @"123-456-7890";
      for(int i=0; i<[str length];i++)
      {
          unichar c = [str characterAtIndex:i];
          if (![[NSCharacterSet alphanumericCharacterSet] characterIsMember:c])
          {
              NSLog(@"%c",c);
              total++;
          }
      }
      NSLog(@"%d",total);
      

      这行得通。希望能帮助到你。快乐编码:)

      【讨论】:

        【解决方案5】:
        int num = [[[myString mutableCopy] autorelease] replaceOccurrencesOfString:@"-" withString:@"X" options:NSLiteralSearch range:NSMakeRange(0, [myString length])];
        

        replaceOccurrencesOfString:withString:options:range: 方法返回已进行替换的数量,因此我们可以使用它来计算您的字符串中有多少 -s。

        【讨论】:

        • 不会因为您不释放副本而导致内存泄漏吗?
        • @trojanfoe 当然,你必须发布副本,但这超出了答案的范围。
        • @H2CO3 此代码也不可能,因为您没有指向副本的指针。它超出了范围,是的,但是许多新手可能会逐字复制此代码,然后想知道他们为什么会泄漏内存。
        • 确实如此,如果您要进行手动内存管理,则需要autorelease。我已经使用 ARC 这么久了,以至于我忘记了不是每个人都在使用!
        【解决方案6】:

        你可以使用NSStringreplaceOccurrencesOfString:withString:options:range:方法

        【讨论】:

          【解决方案7】:

          如果字符串以您要检查的字符开头或结尾,则当前选择的答案将失败。

          改用这个:

          int numberOfOccurances = (int)yourString.length - (int)[yourString stringByReplacingOccurrencesOfString:@"-" withString:@""].length;
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-11-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-02-04
            • 1970-01-01
            • 1970-01-01
            • 2016-07-20
            相关资源
            最近更新 更多