2011-08-21 51 views
4

我想找出计算NSString中大写字符数的最佳方法。我知道如何找出如果某个文字使用此代码大写:如何计算NSString中的大写字符数?

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

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

+2

非常短的虽然不是最高效的方式:'[[秒componentsSeparatedByCharactersInSet:[NSCharacterSet uppercaseLetterCharacterSet]]计数] - 1;'。 – albertamg

+0

+1它工作的很棒!谢谢 – 0SX

回答

7
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是大写字母的出现次数。

+0

你的代码起初给我一个奇怪的号码79050146然后它开始工作......真的很奇怪。任何想法为什么这给了我这么长的数字? – 0SX

+1

如果在循环初始化之前在循环中打印出count,它会给出一个奇怪的值。将'int count'更改为'int count = 0;'以防止垃圾值。 – Dair

+0

+1谢谢,现在工作...... – 0SX

2

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

+0

+1我以为我可能不得不这样做,谢谢。 – 0SX

1

一行溶液

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