如何在NSString中查找特定字符的出现次数是大写的?
Posted
技术标签:
【中文标题】如何在NSString中查找特定字符的出现次数是大写的?【英文标题】:How to find number of occurrences of particular character are in uppercase in NSString? 【发布时间】:2016-08-29 13:08:10 【问题描述】:有什么方法可以在NSString
中找到任何特定字符的大写匹配项,例如:
NSString *str=@"How many U's are in Uppercase";
我尝试的是给所有大写字符,
int count=0;
for (i = 0; i < [str length]; i++)
BOOL isUppercase = [[NSCharacterSet uppercaseLetterCharacterSet] characterIsMember:[str characterAtIndex:i]];
if (isUppercase == YES)
count++;
或
[[str componentsSeparatedByCharactersInSet:[NSCharacterSet uppercaseLetterCharacterSet]] count] - 1;
但我需要在NSString
中出现任何特定字符的大写字母。
【问题讨论】:
你是指字符串中的大写位置还是总的大写计数? 你对你给出的例子有什么期望? 3(大写字母的个数)还是2(大写U的个数)? 总数,比如大写字母中有多少个“U”@TejaNandamuri 计数应该是:2 @Paulw11 因此,正如 Phillip Mills 建议的那样,只需遍历字符串,将每个字符与目标字符进行比较,并在找到时增加计数。 【参考方案1】:你可以用正则表达式来做到这一点:
NSString *str = @"How many U's are in Uppercase";
NSString *pattern = @"U";
NSRegularExpression *expression = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];
NSArray *result = [expression matchesInString:str options:0 range:NSMakeRange(0, str.length)];
NSLog(@"%ld", result.count); // 2
【讨论】:
它只会给出大写的 U 计数,还是将小写的 u 也包含在计数中?@vadian 它只会给你大写计数,因为模式@“U”是大写的。 @RonakChaniyara @RonakChaniyara 只有大写字母。但是你可以提供一个 caseinsensitive 选项来获取两者【参考方案2】:如果您真的想使用NSCharacterSet
,可以使用characterSetWithCharactersInString
来构建自定义的。不过,我不确定与仅使用 ==
循环遍历字符串相比有什么优势。
【讨论】:
如果你能提供基本代码sn-p或者logic@Phillip Mills就太好了以上是关于如何在NSString中查找特定字符的出现次数是大写的?的主要内容,如果未能解决你的问题,请参考以下文章
查找并打印出字符串中特定字符的出现次数 (shell/AIX)