the*_*kmc 17 cocoa objective-c case-sensitive ios
我正在开发一个应用程序,它检查数组是否包含某个字符串.但是,它似乎没有正常工作,因为我认为它可能正在查看字符串的情况.在这行代码中,我如何确保containsObject:不区分大小写?
if ([myArray containsObject:term]) {...}
Run Code Online (Sandbox Code Playgroud)
请询问您是否需要澄清,并感谢您的帮助.
(另外,我发现了这个问题:不区分大小写的比较NSString.我不知道这是否是我需要的,如果是,我将如何使用它)
Lil*_*ard 27
if ([myArray indexOfObjectPassingTest:^(id obj, NSUInteger idx, BOOL *stop){
return (BOOL)([obj caseInsensitiveCompare:term] == NSOrderedSame);
}] != NSNotFound) {
// there's at least one object that matches term case-insensitively
}
Run Code Online (Sandbox Code Playgroud)
Chr*_*ner 17
这是一种使用键值编码的有效方法.
NSArray *strings; // array of strings
if ([[strings valueForKey:@"lowercaseString"] containsObject:[searchString lowercaseString]]) {
NSLog(@"searchString found");
} else {
NSLog(@"searchString NOT found");
}
Run Code Online (Sandbox Code Playgroud)
Swift 3选项:
let things = ["foo", "Bar"]
let searchString = "FOO"
if things.contains(where: { $0.lowercased() == searchString.lowercased() }) {
print("found searchString")
} else {
print("searchString not found")
}
Run Code Online (Sandbox Code Playgroud)
小智 7
NSArray是(故意)不知道它拥有什么.因此,它没有意识到NSString,更不用说区分大小写了.你必须循环遍历数组的项目并进行比较.您可以使用循环数组的多种不同方法之一:
objectEnumeratorindexOfObjectPassingTest: 它使用块来执行您的操作.objectAtIndex:每个项目.我会建议前两个选项之一.
| 归档时间: |
|
| 查看次数: |
6776 次 |
| 最近记录: |