表情符号NSTextStorage

时间:2014-08-13 17:22:04

标签: regex ios7 emoji nstextstorage

我目前正在研究iOS上的自定义NSTextStorage,我需要检测一些主题标签(#),提及和网址...此时所有工作正常,但如果用户尝试从键盘输入表情符号字符串没有显示,因为我使用的是Helvetica字体。

我正在使用常规expresión以这种方式检测主题标签,提及和网址:

NSRegularExpression *iExpression = [NSRegularExpression regularExpressionWithPattern:pattern
                                                                             options:0
                                                                               error:NULL];

NSRange paragraphRange = [self.string paragraphRangeForRange: self.editedRange];        

[iExpression enumerateMatchesInString:self.string
                              options:0
                                range:paragraphRange
                           usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop)
{
    // Changing format of match
}

pattern是有效的正则表达式模式,用于查找主题标签,网址或提及。

是否有一些模式可以检测表情符号?我应该使用什么模式,我曾尝试过这个(以及许多其他模式)[^\\x{1F601}-\\x{1F64F}\r\n]但没有成功。

感谢。

1 个答案:

答案 0 :(得分:0)

我不确定iOS编程正则表达式模式,但我确定的是,虽然您指向的是正确的范围,但是您要排除字符集而不是使用插入符号{{1}在字符集^定义中。此外,我不认为你必须逃避这些十六进制点并匹配CR和& LF类。

有一个完整的表情符号Unicode表,其中包含我在下面的单行表达式中收集的相应Unicode点here

[]

在PCRE风格中,必须通过在修饰符部分键入([0-9#][\x{20E3}])|[\x{00ae}|\x{00a9}|\x{203C}|\x{2047}|\x{2048}|\x{2049}|\x{3030}|\x{303D}|\x{2139}|\x{2122}|\x{3297}|\x{3299}][\x{FE00}-\x{FEFF}]?|[\x{2190}-\x{21FF}][\x{FE00}-\x{FEFF}]?|[\x{2300}-\x{23FF}][\x{FE00}-\x{FEFF}]?|[\x{2460}-\x{24FF}][\x{FE00}-\x{FEFF}]?|[\x{25A0}-\x{25FF}][\x{FE00}-\x{FEFF}]?|[\x{2600}-\x{27BF}][\x{FE00}-\x{FEFF}]?|[\x{2900}-\x{297F}][\x{FE00}-\x{FEFF}]?|[\x{2B00}-\x{2BF0}][\x{FE00}-\x{FEFF}]?|[\x{1F000}-\x{1F6FF}][\x{FE00}-\x{FEFF}]? 以匹配unicode字符来启用UTF-16标志,因此它将是u但不幸的是我不知道它是怎么回事在你的具体情况下完成。