【问题标题】:NSPredicate of special characters - iPhone特殊字符的 NSPredicate - iPhone
【发布时间】:2010-03-19 03:17:47
【问题描述】:

我正在尝试创建一个包含特殊字符的谓词

例如:

[[myIngredients filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"name BEGINSWITH[c] %@", [alphabet objectAtIndex:idx]]];

在这里,我将得到所有以(假设 idx = 5)'e' 开头的成分。因为我必须用英语和法语做我的应用程序,所以一些成分以特殊字符开头,比如“é”,甚至是“o”的“œ”。如何在我的谓词中包含这些特殊字符?

最好的

【问题讨论】:

    标签: iphone objective-c core-data special-characters nspredicate


    【解决方案1】:

    我认为您可能正在寻找 NSPredicate 支持的“变音符号不敏感”标志。就像您已经使用的“c”标志一样,除了您使用“d”。像这样:

    … predicateWithFormat:@"name BEGINSWITH[cd] %@", …
    

    现在字符串“e”也将匹配“é”、“ê”、“ë”等。

    【讨论】:

    • 谢谢,它就像一个魅力......除了 œ!你有什么好的解决方案吗?否则,我将添加一个例外。
    • 我唯一能想到的就是使用复合谓词。创建一个 NSPredicate 来匹配“o”,另一个来匹配“œ”。然后将它们加入:[NSCompoundPredicate orPredicateWithSubpredicates:[NSArray arrayWithObjects:p1, p2, nil]]
    • 如何让 NDDiacriticInsensitive 和 NSCaseInsensitive 一起工作?好像只能二选一?谢谢
    • edit:我们使用变音符号不区分大小写的方法是首先将涉及的字符串小写,然后只使用 NSDiacriticInsensitive。可能不适用于每个人的具体情况
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 2012-03-03
    • 1970-01-01
    相关资源
    最近更新 更多