Ios 不区分大小写比较字符串串
将NSString与一组其他字符串进行比较的最佳方法是什么?不区分大小写?如果是其中一个字符串,则该方法应返回YES,否则返回NO。这里有一个小帮助函数:Ios 不区分大小写比较字符串串,ios,objective-c,nsstring,compare,case-insensitive,Ios,Objective C,Nsstring,Compare,Case Insensitive,将NSString与一组其他字符串进行比较的最佳方法是什么?不区分大小写?如果是其中一个字符串,则该方法应返回YES,否则返回NO。这里有一个小帮助函数: BOOL isContainedIn(NSArray* bunchOfStrings, NSString* stringToCheck) { for (NSString* string in bunchOfStrings) { if ([string caseInsensitiveCompare:stringToChe
BOOL isContainedIn(NSArray* bunchOfStrings, NSString* stringToCheck)
{
for (NSString* string in bunchOfStrings) {
if ([string caseInsensitiveCompare:stringToCheck] == NSOrderedSame)
return YES;
}
return NO;
}
当然,这可以针对不同的用例进行极大的优化
例如,如果对常量bunchOfStrings进行大量检查,则可以使用NSSet
保存字符串的小写版本,并使用containsObject:
:
BOOL isContainedIn(NSSet* bunchOfLowercaseStrings, NSString* stringToCheck)
{
return [bunchOfLowercaseStrings containsObject:[stringToCheck lowercaseString]];
}
只是对尼古拉的回答补充几点:
nsorderedName
定义为0
typedef NS_ENUM(NSInteger, NSComparisonResult) {NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};
因此,如果在nil
对象上调用caseInsensitiveCompare:
,您将得到nil
。然后将nil
与orsordersame
(0)进行比较,您将得到一个匹配项,这当然是错误的
此外,您还必须检查传递给caseInsensitiveCompare:
的参数是否必须不为零。从:
此值不能为零。如果此值为nil,则行为为
未定义,可能会在未来版本的OS X中更改
非常感谢。我特别想找一些不区分案件的比较: