我想在属性中搜索description
(an NSString
实例)有一个给定的单词。
我尝试使用这个谓词:
[NSPredicate predicateWithFormat:@"description CONTAINS[cd] %@", theWord];
它有效,但它也发现子词.
例如,给定theWord
:
Car
它也会这个description
:
圣诞节颂歌
相反,我希望我的谓词仅匹配a
, or christmas
, or carol
.
(我正在使用 Core Data 和 NSFetchRequest。)
像这样的东西吗?
NSString *matchStr = @".*\\bCarol\\b.*";
NSPredicate *pred =[NSPredicate predicateWithFormat: @"description MATCHES %@", matchStr];
NSArray *arr = @[
@"A Christmas Carol",
@"Sing",
@"Song"
];
NSArray *filtered = [arr filteredArrayUsingPredicate: pred];
诀窍是\b
元字符,表示字符串中的单词边界。为了将反斜杠“放入”正则表达式模式字符串中,您必须在其前面添加另一个反斜杠,以便编译器了解字符串中应该有一个真正的反斜杠。因此字符串中出现“\\b”。
另外,为了更好地覆盖非英语语言字符串,您应该启用 Unicode 单词边界检测,方法是设置w
标志选项。匹配字符串将如下所示:
NSString *matchStr = @"(?w).*\\bCarol\\b.*";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)