【问题标题】:How to count the number of uppercase characters in a NSString?如何计算 NSString 中大写字符的数量?
【发布时间】:2011-08-21 22:19:59
【问题描述】:

我正在尝试找出计算 NSString 中大写字符数的最佳方法。我知道如何使用以下代码找出某个字符是否为大写:

NSString *s = @"This is a string";
BOOL isUppercase = [[NSCharacterSet uppercaseLetterCharacterSet] characterIsMember:[s characterAtIndex:0]];

计算 NSString 中大写字母数量的最佳方法是什么?谢谢。

【问题讨论】:

  • 一个很短但不是最高效的方式:[[s componentsSeparatedByCharactersInSet:[NSCharacterSet uppercaseLetterCharacterSet]] count] - 1;.

标签: iphone objective-c c nsstring range


【解决方案1】:
NSString *s = @"This is a string";  
int count=0;  
for (i = 0; i < [s length]; i++) {
    BOOL isUppercase = [[NSCharacterSet uppercaseLetterCharacterSet] characterIsMember:[s characterAtIndex:i]];
    if (isUppercase == YES)
       count++;
}

count 是大写出现的次数。

【讨论】:

  • 你的代码起初给了我一个奇怪的数字 79050146 然后它开始工作......真的很奇怪。任何想法为什么这给了我这么长的数字?
  • 如果你在循环初始化之前打印出count,它会给出一个奇怪的值。将 int count; 更改为 int count = 0; 以防止垃圾值。
【解决方案2】:

逐个遍历字符串中的索引,并在找到大写字母时将1 添加到计数器。

【讨论】:

    【解决方案3】:

    一线解决方案

     NSUInteger count = [[[@"A string HERE!!" componentsSeparatedByCharactersInSet:[[NSCharacterSet uppercaseLetterCharacterSet] invertedSet]] componentsJoinedByString:@""] length]; // count = 5
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-17
      • 1970-01-01
      • 2010-11-08
      • 2014-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多