我有一个iOS 5应用程序,允许用户使用国际键盘输入用户名。 我想检查输入(NSString *)是否包含表情符号字符。
禁用表情符号键盘不是一个选项(使用UIKeyboardTypeASCIICapable禁用某些国际键盘)。
有解决这个问题的好方法吗?
答案 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
}