不区分大小写的stringsearch – iphone

我正在寻找一种方法来在Objective-C中的另一个string中执行不区分大小写的stringsearch。 我可以find方法来search区分大小写的string,并比较不敏感的情况下,而不是search+不区分大小写。

我想要执行的search示例:

“约翰”在“我告诉约翰find我一个好的searchalgorithm”

在“我认为这是一个真正的想法发表这个问题”的“糟糕的IDEA”

我宁愿只坚持NSStrings。

NSRange r = [MyString rangeOfString:@"Boo" options:NSCaseInsensitiveSearch]; 

如果你做了很多事情,可以把它封装到NSString类的方法中。 喜欢这个:

 @interface NSString(MyExtensions) -(NSRange)rangeOfStringNoCase:(NSString*)s; @end @implementation NSString(MyExtensions) -(NSRange)rangeOfStringNoCase:(NSString*)s { return [self rangeOfString:s options:NSCaseInsensitiveSearch]; } @end 

你的代码可能会变得更可读。 再次,那些不熟悉的人可读性较差。

misagged as c#?

inheritance人对objc的一些build议

 NSRange textRange = [[string lowercaseString] rangeOfString:[substring lowercaseString]]; if(textRange.location != NSNotFound) { //Does contain the substring } 

我从谷歌在这个网页: http : //www.developers-life.com/does-a-nsstring-contain-a-substring.html

这是否有助于你的情况?

如果你使用的是ios 8,你可以使用NSString的localizedCaseInsensitiveContainsString

– (BOOL)localizedCaseInsensitiveContainsString:(NSString *)aString

localizedCaseInsensitiveContainsString:是不区分大小写的变体。 请注意,它也使当前的语言环境生效。 独立于区域设置的不区分大小写的操作以及其他需求可以通过调用rangeOfString:options:range:locale:直接实现。

这是Swift的一个自我容器解决scheme:

 private func containsKeyword(text: NSString, keyword: String) -> Bool { return text.rangeOfString(keyword, options:NSStringCompareOptions.CaseInsensitiveSearch).location != NSNotFound }