我有一些字符串值,它由几个字符构成,我想检查它们是否存在于另一个NSString中,没有区分大小写和空格。
示例代码:
NSString *me = @"toBe" ;
NSString *target=@"abcdetoBe" ;
//than check if me is in target.
此处我将获得true
,因为me
中存在target
。
我该如何检查这种情况?
我已阅读How do I check if a string contains another string in Objective-C?,但其区分大小写,我需要找到没有区分大小写的内容。
答案 0 :(得分:20)
将选项NSCaseInsensitiveSearch
与rangeOfString:options:
NSString *me = @"toBe" ;
NSString *target = @"abcdetobe" ;
NSRange range = [target rangeOfString: me options: NSCaseInsensitiveSearch];
NSLog(@"found: %@", (range.location != NSNotFound) ? @"Yes" : @"No");
if (range.location != NSNotFound) {
// your code
}
NSLog输出:
发现:是的
注意:我更改了目标以证明不区分大小写的搜索有效。
选项可以“或”组合在一起,包括:
答案 1 :(得分:2)
-(BOOL)substring:(NSString *)substr existsInString:(NSString *)str {
if(!([str rangeOfString:substr options:NSCaseInsensitiveSearch].length==0)) {
return YES;
}
return NO;
}
用法:
NSString *me = @"toBe";
NSString *target=@"abcdetoBe";
if([self substring:me existsInString:target]) {
NSLog(@"It exists!");
}
else {
NSLog(@"It does not exist!");
}
答案 2 :(得分:1)
与iOS8的发布一样,Apple为NSString
添加了一种名为localizedCaseInsensitiveContainsString
的新方法。这将完全符合您的要求:
let string: NSString = "ToSearchFor"
let substring: NSString = "earch"
string.localizedCaseInsensitiveContainsString(substring) // true
目标-C:
NSString *string = @"ToSearchFor";
NSString *substring = @"earch";
[string localizedCaseInsensitiveContainsString:substring]; //true