使用正则表达式的两种方式:NSRange和NSRegularExpression类

2014-11-7 9:15:32     15 人阅读    

1、直接查找,不使用正则表达式类

NSString *searchText = @"// Do any additional setup after loading the view, typically from a nib.";
NSRange range = [searchText rangeOfString:@"(?:[^,])*\\." options:NSRegularExpressionSearch];
 
if (range.location != NSNotFound) {
    NSLog(@"%@", [searchText substringWithRange:range]);
}


2、使用正则表达式类

NSString *searchText = @"// Do any additional setup after loading the view, typically from a nib.";    
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(?:[^,])*\\." options:NSRegularExpressionCaseInsensitive error:&error];
NSTextCheckingResult *result = [regex firstMatchInString:searchText options:0 range:NSMakeRange(0, [searchText length])];
if (result) {
    NSLog(@"%@\n", [searchText substringWithRange:result.range]);
}

一般的匹配,也就是说只关心第一个匹配的情况下,第一种方式更加简洁;
但是,如果需要匹配多个结果,同时匹配多次的情况下,第二种方式效率会更高
3、字符串替换

NSMutableString *mutableStr = [NSMutableString stringWithString:searchText];
[mutableStr replaceOccurrencesOfString:@"\ba\\w+" withString:@"XYZ" options:NSRegularExpressionSearch range:NSMakeRange(0, [mutableStr length])];
 
NSLog(@"replaced string: %@", mutableStr);


NSString是不能修改的,所以没有 replaceOccurrencesOfString 方法的


原文地址:http://www.itmmd.com/201411/136.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

使用RunAs命令运行资源管理器,从而以管理员权限进行文件操作   上一篇
下一篇  javascript教程-变量的垃圾收集处理

精彩回复
发表评论
姓名:       

《程序员app》专门为程序员量身定做!