iOS rangeofString 在主字符串为 nil 且子字符串不为 nil 时做什么?
What iOS rangeofString do when main string is nil and substring is not nil?
NSString *result = nil;
if([result rangeOfString:@"SUCCESS"].location != NSNotFound)
{
NSLog(@"Location: %lu", [result rangeOfString:@"SUCCESS"].location);
NSLog(@"Length: %lu", [result rangeOfString:@"SUCCESS"].length);
}
else{
NSLog(@"NULL found: %@", result);
}
此代码显示输出:
2016-05-12 18:51:44.589 TestProject[21666:207505] Location: 0
2016-05-12 18:51:44.590 TestProject[21666:207505] Length: 0
实际上它应该显示输出:
NULL found: (null)
请解释输出的原因
从下面link我得到了关于这类问题的很好的解释:
How do I check if a string contains another string in Objective-C?
具体可以阅读@ucangetit 的回答。
你可以按照这两个函数....
- (BOOL)doesString:(NSString*)string containString:(NSString*)otherString {
if(otherString && [string rangeOfString:otherString].length)
return YES;
else
return NO;
}
或简单地:
- (BOOL)doesString:(NSString*)string containString:(NSString*)otherString {
return (otherString && [string rangeOfString:otherString].length);
}
在我看来,如果 range.length == 0
=> 没有找到。
NSString *result = nil;
NSRange range = [result rangeOfString:@"SUCCESS"];//location=0, length=0
if(range.length > 0) //Found
{
NSLog(@"Location: %lu", range.location);
NSLog(@"Length: %lu", range.length);
}
NSString *result = nil;
if([result rangeOfString:@"SUCCESS"].location != NSNotFound)
{
NSLog(@"Location: %lu", [result rangeOfString:@"SUCCESS"].location);
NSLog(@"Length: %lu", [result rangeOfString:@"SUCCESS"].length);
}
else{
NSLog(@"NULL found: %@", result);
}
此代码显示输出:
2016-05-12 18:51:44.589 TestProject[21666:207505] Location: 0
2016-05-12 18:51:44.590 TestProject[21666:207505] Length: 0
实际上它应该显示输出:
NULL found: (null)
请解释输出的原因
从下面link我得到了关于这类问题的很好的解释:
How do I check if a string contains another string in Objective-C?
具体可以阅读@ucangetit 的回答。
你可以按照这两个函数....
- (BOOL)doesString:(NSString*)string containString:(NSString*)otherString {
if(otherString && [string rangeOfString:otherString].length)
return YES;
else
return NO;
}
或简单地:
- (BOOL)doesString:(NSString*)string containString:(NSString*)otherString {
return (otherString && [string rangeOfString:otherString].length);
}
在我看来,如果 range.length == 0
=> 没有找到。
NSString *result = nil;
NSRange range = [result rangeOfString:@"SUCCESS"];//location=0, length=0
if(range.length > 0) //Found
{
NSLog(@"Location: %lu", range.location);
NSLog(@"Length: %lu", range.length);
}