2011-08-21 18 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 
相關問題