gpt4 book ai didi

cocoa-touch - "Whole word"通过 NSPredicate 在 NSString 中搜索

转载 作者:行者123 更新时间:2023-12-04 22:07:19 25 4
gpt4 key购买 nike

我想搜索属性 description(一个 NSString 实例)中是否有给定的单词。

我试过这个谓词:

[NSPredicate predicateWithFormat:@"description CONTAINS[cd] %@", theWord];

它有效,但它也会找到子词。

例如,给定 theWord :

Car



它也会处理这个 description :

A Christmas Carol



相反,我希望我的谓词只匹配 a 、或 christmascarol

(我正在使用核心数据和 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”。

此外,为了更好地覆盖非英语语言字符串,您应该通过设置 w 标志选项来启用 Unicode 词边界检测。匹配字符串将如下所示:
NSString *matchStr = @"(?w).*\\bCarol\\b.*"; 

关于cocoa-touch - "Whole word"通过 NSPredicate 在 NSString 中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8559156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com