Tom*_*myG 9 string iphone search objective-c ios
我正在寻找一种方法在Objective-C中的另一个字符串中执行不区分大小写的字符串搜索.我可以找到搜索区分大小写的字符串的方法,并比较不敏感的情况,但不能搜索+不区分大小写.
我想要执行的搜索示例:
"john"在"我告诉约翰找到一个很好的搜索算法"
"糟糕的IDEA"在"我认为这是一个真正的想法发布这个问题"
我更喜欢只坚持NSStrings.
Sev*_*yev 31
NSRange r = [MyString rangeOfString:@"Boo" options:NSCaseInsensitiveSearch];
Run Code Online (Sandbox Code Playgroud)
如果你做了很多,可以随意将它封装到NSString类别的方法中.像这样:
@interface NSString(MyExtensions)
-(NSRange)rangeOfStringNoCase:(NSString*)s;
@end
@implementation NSString(MyExtensions)
-(NSRange)rangeOfStringNoCase:(NSString*)s
{
return [self rangeOfString:s options:NSCaseInsensitiveSearch];
}
@end
Run Code Online (Sandbox Code Playgroud)
您的代码可能会变得更易读.然后,那些不熟悉的人不太可读.
被误认为是c#?
继承人对objc的一些建议
NSRange textRange = [[string lowercaseString] rangeOfString:[substring lowercaseString]];
if(textRange.location != NSNotFound)
{
//Does contain the substring
}
Run Code Online (Sandbox Code Playgroud)
这是我在谷歌的网页上获得的:http: //www.developers-life.com/does-a-nsstring-contain-a-substring.html
这对您的情况有帮助吗?
小智 8
如果您使用的是ios 8,则可以使用NSString的localizedCaseInsensitiveContainsString
- (BOOL)localizedCaseInsensitiveContainsString:(NSString*)aString
localizedCaseInsensitiveContainsString:是不区分大小写的变体.请注意,它也会使当前区域设置生效.可以通过调用rangeOfString:options:range:locale:direct来实现与区域设置无关的不区分大小写的操作以及其他需求.