首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配目标C中的CJK分机B

匹配目标C中的CJK分机B
EN

Stack Overflow用户
提问于 2016-12-08 09:25:03
回答 1查看 235关注 0票数 2

我在试图匹配NSString中的CJK扩展B字符时遇到了困难。

维基百科CJK统一表意文字分机B:

CJK统一表意文字扩展B是一个Unicode块,包含了用于中文、日文、韩文和越南语的罕见的具有历史意义的CJK表意文字。

字符的unicode块是:从U+20000U+2A6DF,我使用regex:[\\ud840-\\ud868][\\udc00-\\udfff]|\\ud869[\\udc00-\\uded6]来匹配CJK扩展B字符。

这是我的代码:

代码语言:javascript
复制
NSString *searchedString = @""; // First character (U+20000) 

NSString *pattern = @"[\\ud840-\\ud868][\\udc00-\\udfff]|\\ud869[\\udc00-\\uded6]";

 NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil];
if ([regex numberOfMatchesInString:searchedString options:0 range:NSMakeRange(0, [searchedString length])] > 0) {
    NSLog(@"matches");
} else {
    NSLog(@"doesn't match");
}

输出:doesn't match

举个例子,如果我对Hiragana字符尝试一些更简单的东西,它就会起作用:

代码语言:javascript
复制
NSString *searchedString = @"ひ";

NSString *pattern = @"[\\u3040-\\u309F]";

输出:matches

任何帮助都将不胜感激。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-08 10:18:22

您可以使用\Uxxxxxxxx符号来匹配BMP平面外的那些Unicode字符。

Acc.转到ICU regex文档

\Uhhhhhhhh将字符与十六进制值hhhhhhhh相匹配。尽管最大的Unicode代码点是\U0010ffff,但必须提供确切的8位十六进制数字。

所以,用

代码语言:javascript
复制
NSString *pattern = @"[\\U00020000-\\U0002A6DF]+";

在线Obj-C演示

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41035865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档