不区分大小写的字符串搜索 - iphone

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)

您的代码可能会变得更易读.然后,那些不熟悉的人不太可读.

  • 也就是说,你这样问题的第一站应该仍然是Xcode的在线帮助,而不是StackOverflow.菜单,帮助/搜索NSString,选择"NSString类引用". (3认同)

Mar*_*ark 9

被误认为是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来实现与区域设置无关的不区分大小写的操作以及其他需求.