iOS 5.0检查NSString是否包含表情符号字符

时间:2012-09-19 04:41:36

标签: ios5 nsstring emoji

我有一个iOS 5应用程序,允许用户使用国际键盘输入用户名。 我想检查输入(NSString *)是否包含表情符号字符。

禁用表情符号键盘不是一个选项(使用UIKeyboardTypeASCIICapable禁用某些国际键盘)。

我试过了this。但它没有检测到these之类的一些字符。

有解决这个问题的好方法吗?

4 个答案:

答案 0 :(得分:10)

我能够使用以下方法检测iOS 5和iOS 6表情符号键盘中的所有表情符号 https://gist.github.com/4146056

答案 1 :(得分:1)

使用https://github.com/woxtu/NSString-RemoveEmoji类别,但请注意 iOS 9.1增加了上面提到的方法无法识别的表情符号(特别是这些:)。

FIX:替换
return (0x1d000 <= codepoint && codepoint <= 0x1f77f);方法中的isEmoji
return (0x1d000 <= codepoint && codepoint <= 0x1f77f) || (0x1F900 <= codepoint && codepoint <=0x1f9ff);

答案 2 :(得分:0)

对于iOS 10及更低版本,您应该检查unicode是否在以下值之间。

if ((0x1d000 <= uc && uc <= 0x1f77f) || (0x1f900 <= 0x1f9ff)) {
     //is emoji
}

答案 3 :(得分:-1)

NSData *data = [yourstringofemo dataUsingEncoding:NSNonLossyASCIIStringEncoding];

NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];


if ([goodValue rangeOfString:@"\u"].location == NSNotFound) 
{
      goodvalue string contains emoji characters
} 
else
{
      goodvalue string does not contain emoji characters
}