当前位置:  开发笔记 > 编程语言 > 正文

NSPredicate和简单的正则表达式问题

如何解决《NSPredicate和简单的正则表达式问题》经验,为你挑选了2个好方法。

我遇到简单的NSPredicates和正则表达式的问题:

NSString *mystring = @"file://questions/123456789/desc-text-here";
NSString *regex = @"file://questions+";

NSPredicate *regextest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
BOOL isMatch = [regextest evaluateWithObject:mystring];

在上面的示例isMatch中,始终为false/NO.

我错过了什么?我似乎无法找到匹配的正则表达式file://questions.



1> Matt B...:

NSPredicates似乎尝试匹配整个字符串,而不仅仅是子字符串.您的尾随+只是意味着匹配一个或多个's'字符.您需要允许匹配任何尾随字符.这有效:regex = @"file://questions.*"



2> Abizern..:

如果你只是想测试字符串是否存在:试试这个

NSString *myString = @"file://questions/123456789/desc-text-here";
NSString *searchString = @"file://questions";

NSRange resultRange = [myString rangeWithString:searchString];
BOOL result = resultRange.location != NSNotFound;

改变地,使用谓词

NSString *myString = @"file://questions/123456789/desc-text-here";
NSString *searchString = @"file://questions";

NSPredicate *testPredicate = [NSPredicate predicateWithFormat:@"SELF BEGINSWITH %@", searchString];

BOOL result = [testPredicate evaluateWithObject:myString];

我相信文档声明使用谓词是检查子字符串是否存在时的方法.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有