关于rangeOfString:和containsString:
2016-05-26 16:24
579 查看
containsString:是iOS8之后的API,所以类别自定义:
这里注意当string为nil的时候,返回的是{0,0},不是{NSNotFound,0}。。。
这里自己玩了一下,试图用runtime修改系统的rangeOfString:方法,虽然失败了,也是记一下吧
这里发生了一件事,当string为nil是,他是不调用NSString的rangeOfString:方法的,楼主脑子犯抽的把[NSString class]换成了nil,结果nil真的就只是nil(/笑哭)
楼主:卒…
- (BOOL)lee_containsString:(NSString *)str { if (str && [self rangeOfString:str].location != NSNotFound) return YES; else return NO; }
这里注意当string为nil的时候,返回的是{0,0},不是{NSNotFound,0}。。。
这里自己玩了一下,试图用runtime修改系统的rangeOfString:方法,虽然失败了,也是记一下吧
#pragma mark - replaceMethod - (void)replaceRangeOfString { class_replaceMethod([NSString class], @selector(rangeOfString:), (IMP)lee_rangOfString, "R@"); } NSRange lee_rangOfString(id self,SEL _cmd,NSString *str) { if (self) { NSError *error = nil; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:str options:NSRegularExpressionCaseInsensitive error:&error]; NSTextCheckingResult *result = [regex firstMatchInString:self options:NSMatchingReportProgress range:NSMakeRange(0, [self length])]; return NSEqualRanges(result.range, NSMakeRange(0, 0)) ? NSMakeRange(NSNotFound, 0) : result.range ; } else return NSMakeRange(NSNotFound, 0); return NSMakeRange(NSNotFound, 0); }
这里发生了一件事,当string为nil是,他是不调用NSString的rangeOfString:方法的,楼主脑子犯抽的把[NSString class]换成了nil,结果nil真的就只是nil(/笑哭)
楼主:卒…
相关文章推荐
- Ex2010-15 Shared mailboxes in Exchange
- 各国政府争相发展人工智能,中国领先于美国一步
- CodeForces667APouring Rain
- LR11创建场景报错:Failed to create Online: Invalid pointer
- CodeForces651BBeautiful Paintings
- A folder failed to be renamed or moved
- Block属性声明strong和retain竟然不一样
- int main(int argc,char* argv[])详解
- leetcode.336. Palindrome Pairs
- ORA-00054:资源正忙,但指定以 NOWAIT 方式获取资源,或者超时失效
- innodb Lock wait timeout exceeded;
- document.domain 跨域实现
- [书目20160526]Brain Rules 让大脑自由:释放天赋的12条定律
- gmail smtp 535 5.7.8无法登陆解决
- 13周练 D - Beautiful Paintings 【升数列】
- 游戏AI--决策(1)
- 机器人与人类“同床共枕“科技能让人类提升安全感?
- Sorting Railway Cars
- [leetcode] 172. Factorial Trailing Zeroes 解题报告
- 219. Contains Duplicate II