`
wonderzl
  • 浏览: 78711 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

NSPredicate及正则的一点使用

阅读更多
记录一点正则表达式的使用。

例如:判断字符串首字母是否为字母。
	NSString *regex = @"[A-Za-z]+";
	NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];

	if ([predicate evaluateWithObject:aString]) {
	}


判断Array中是否包含某一规则的对象,并返回一个数组:
NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS %@", regex];
并调用:- (NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate; 方法即可。


获得一个数组中某些对象除外的数组:
NSPredicate *notPredicate = [NSPredicate predicateWithFormat:@"NOT (SELF in %@)", arrayFilter2];且还是要调用- (NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate; 方法。

同样,如果我们想找出某个范围内的对象,创建如下Predicate (这里可以用到所有的比较操作符): NSPredicate *pre = [NSPredicate predicateWithFormat:@"self.*** < 5"];
并调用:- (BOOL)evaluateWithObject:(id)object;方法。
在这里啰嗦一句,如果只是在数组中查找是否存在对象时用indexOfObject,如果不存在则返回为NSNotFound.

字符串替换:
	NSError* error = NULL;
    NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:@"(encoding=\")[^\"]+(\")"
                                                                           options:0
                                                                             error:&error];
    NSString* sample = @"<xml encoding=\"abc\"></xml><xml encoding=\"def\"></xml><xml encoding=\"ttt\"></xml>";
	NSLog(@"Start:%@",sample);
	NSString* result = [regex stringByReplacingMatchesInString:sample
                                                       options:0
                                                         range:NSMakeRange(0, sample.length)
                                                  withTemplate:@"$1utf-8$2"];
    NSLog(@"Result:%@", result);


截取字符串如下:
    //组装一个字符串,需要把里面的网址解析出来
	NSString *urlString=@"<meta/><link/><title>1Q84 BOOK1</title></head><body>";
	
	//NSRegularExpression类里面调用表达的方法需要传递一个NSError的参数。下面定义一个
	
	NSError *error;
	
	//http+:[^\\s]* 这个表达式是检测一个网址的。(?<=title\>).*(?=</title)截取html文章中的<title></title>中内文字的正则表达式
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(?<=title\\>).*(?=</title)" options:0 error:&error];
	
    if (regex != nil) {
        NSTextCheckingResult *firstMatch=[regex firstMatchInString:urlString options:0 range:NSMakeRange(0, [urlString length])];
        
        if (firstMatch) {
            NSRange resultRange = [firstMatch rangeAtIndex:0];
            
            //从urlString当中截取数据
            NSString *result=[urlString substringWithRange:resultRange];
            //输出结果
            NSLog(@"->%@<-",result);
        }
        
    }

分享到:
评论

相关推荐

    IOS中NSPredicate和NSRegularExpression校验正则表达式区别

    本文文章通过实例代码给大家讲述了在IOS开发中NSPredicate和NSRegularExpression校验正则表达式区别,需要的朋友赶快学习下吧。

    NSPredicate用法

    本demo详细讲解了NSPredicate的使用;例如正则表达的使用、把程序中的一个数组中符合数组中内容的元素过滤出来、其它字符串的使用 BEGINSWITH、ENDSWITH、CONTAINS IN、BETWEEN、和match混合使用 比较问题

    NSPredicate Demo

    NSPredicate 的demo。 NSPredicate过滤器的使用方法。

    NSPredicate

    NSPredicate的使用总结,OC中的谓词操作是针对于数组类型的,他就好比数据库中的查询操作,数据源就是数组,这样的好处是我们不需要编写很多代码就可以去操作数组,同时也起到过滤的作用,我们可以编写简单的谓词...

    正则表达式在IOS中的应用及IOS中三种正则表达式的使用与比较

    正则表达式在ios中应用 一、什么是正则表达式  正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式。正则表达式可以检测给定的字符... NSPredicate *numberPre = [NSPredicate predicateWithFormat:@"SELF MA

    NSpredicate

    最近常用到NSpredicate ,自己汇总了一些用法,总结NSpredicate 用法,

    iOS中NSPredicate谓词的使用

    主要给大家介绍了关于iOS中NSPredicate谓词的使用方法,文中通过示例代码介绍的非常详细,对各位iOS开发者们具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    iOS中谓词(NSPredicate)的基本入门使用教程

    The NSPredicate class is used to define logical conditions used to constrain a search either for a fetch or for in-memory filtering. NSPredicate类是用来定义逻辑条件约束的获取或内存中的过滤搜索。 可以...

    iOS原生正则表达式以及NSArray快捷过滤

    NSPredicate应用,包括以下几个部分: 1、字符串,正则表达式的匹配; 2、字符串数组NSArray和NSMutableArray的快捷过滤方式; 3、自定义对象数组NSArray和NSMutableArray的快捷过滤方式;

    Swift_NSPredicate模糊、精确、查找Demo

    Swift_NSPredicate模糊、精确、查找Demo

    ios-NSPredicate用于查询.zip

    Cocoa框架中的NSPredicate用于查询,原理和用法都类似于SQL中的where,作用相当于数据库的过滤取,用于数组与数组、数组与字符串之间之间数据查询,增删查改,数据比较

    iOS App开发中Objective-C使用正则表达式进行匹配的方法

    iOS中有三种方式来实现正则表达式的匹配。现在将他们都记录在这里: 1.利用NSPredicate(谓词)匹配 例如匹配有效邮箱: NSString *email = @“nijino_saki@163.com”; NSString *regex = @[A-Z0-9a-z._%+-]+@...

    IOS正则表达式之验证密码身份证手机号

    在项目中,我们在验证用户的输入,最简单的方法就是使用正则表达式了,ios系统也提供很方便的方法,让我们可以轻松的来验证用户名,密码,身份证好 ,手机号等; 下面附上我在项目中用到的正则表达式的验证方法, 由于比较...

    正则表达式验证用户名、密码、手机号码、身份证(推荐)

    废话不多说了,下面给大家介绍使用正则表达式验证用户名、密码、手机号码、身份证的写法,需要的的朋友参考下吧 //用户名 + (BOOL) validateUserName:(NSString *)name { NSString *userNameRegex = @"^[A-Za-z0-9...

    浅谈iOS应用中的相关正则及验证

    1、手机号码的验证正则 正则表达式: ^((13[0-9])|(15[^4,\\D])|(18[0,0-9]))\\d{8}$ 详细解释 解释: •^…$: ^:开始 $:结束 中间为要处理的字串 •(13[0-9]): 以13开头接下来一位为0-9之间的数 13 : 以13开头 [0-9...

    iOS开发验证判断语句之正则表达式小结

    一般都采用正则表达式的形式来做判断,本文列举一些项目中非常实用的一些正则表达式的判断语句,以后开发起来直接复制粘贴就可以,这样大大节省了开发时间,下面不多说,直接上代码。 一、验证移动手机号: + (BOOL...

    iOS中常见正则表达式验证方法

    在某些App应用里面需要填写用户信息(用于验证),有身份证、手机号、军官证等等。下面来跟大家分享一下各自的验证方式。 1.验证 手机号码 ,这个是对... * 移动号段正则表达式 */ NSString *CM_NUM = @^((13[4-9])|

Global site tag (gtag.js) - Google Analytics