我知道我可以检查字符串是否包含大写字母但在Objective-C中是否有一些内置函数来检查所有字符是否都是大写字母?我想避免遍历每个字符以查看它是否包含一个小写字母,然后如果它包含一个字符就会中断循环,因为这会占用更多内存并占用更多时间。时间是一个约束,因为我必须处理数千个字符串。
答案 0 :(得分:5)
考虑到您的问题,可能会采用其他方法:使用NSString
rangeOfCharactersFromSet:
传递NSCharacterSet
的{{1}}。如果这找到任何东西,那么字符串不是全部大写。它是一个单行表达式,就像其他当前答案一样,但不涉及创建字符串的大写副本,适用于所有Unicode字母。
答案 1 :(得分:1)
试试这个
NSString * myString;
[myString.uppercaseString isEqualToString:myString];
答案 2 :(得分:0)
[your_string.uppercaseString isEqualToString:your_string];
如果你需要处理很多字符串,特别是长字符串可能会跟随代码会更快
// In case you need process a lo of strings this set should be initialized before loop!
NSCharacterSet *set = [NSCharacterSet lowercaseLetterCharacterSet];
// check for allowed characters
BOOL isValid = ([string rangeOfCharacterFromSet:set].location == NSNotFound);
答案 3 :(得分:0)
@implementation NSString (uppercaseOnly)
- (BOOL) allUpperCase {
return [self rangeOfCharacterFromSet:[[NSCharacterSet upperCaseLetterCharacterSet] invertedSet]].location == NSNotFound;
}