OStack程序员社区-中国程序员成长平台

标题: ios - 有没有办法检查字符串是否包含 Unicode 字母? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 20:06
标题: ios - 有没有办法检查字符串是否包含 Unicode 字母?

在 Cocoa 中,正则表达式可能遵循 ICU Unicode 规则进行字符匹配,并且 ICU 标准包括用于匹配各种 Unicode 字母的字符属性,例如 \p{L}。不过

NSString* str = @"A";
NSPredicate* pred = [NSPredicate predicateWithFormat"SELF MATCHES '\\p{L}'"];
NSLog(@"%d", [pred evaluateWithObject:str]);

似乎无法编译:

Can't do regex matching, reason: Can't open pattern U_REGEX_BAD_INTERVAL (string A, pattern p{L}, case 0, canon 0)

如果不支持字符属性(是吗?),我还能如何在我的 iOS 应用程序中检查字符串是否包含 Unicode 字母?



Best Answer-推荐答案


这里的重点是 MATCHES 需要一个完整的字符串匹配,而且,传递给正则表达式引擎的 \ 反斜杠应该是一个 literal 反斜杠。

因此正则表达式可以是

(?s).*\p{L}.*

这意味着:

在 iOS 中,只需将反斜杠加倍:

NSPredicate * predicat = [NSPredicate predicateWithFormat"SELF MATCHES '(?s).*\\p{L}.*'"];

IDEONE demo

如果 NSPrediciate 中的反斜杠被特别处理,请使用:

NSPredicate * predicat = [NSPredicate predicateWithFormat"SELF MATCHES '(?s).*\\\\p{L}.*'"];

关于ios - 有没有办法检查字符串是否包含 Unicode 字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37386271/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4