本文由 发布,转载请注明出处,如有问题请联系我们! 发布时间: 2021-08-01emoji代码怎么用-完整emoji表情包大全
加载中新项目必须对客户键入的emoji神情开展过虑,以前对于系统软件的emoji神情全是用unicode编号集分辨的,可是伴随着iOS系统软件的emoji神情愈来愈丰富多彩,以前的分辨就变得乏力了,再再加上第三方搜狗搜索和百度输入法的掺和,乃至是不一样iOS系统软件的 API分辨都不一样,因此必须再次发布一下分辨的办法了。
通过剖析得到,在iOS14和iOS12系统软件上,对于
if (![[textView textInputMode] primaryLanguage] || [[[textView textInputMode] primaryLanguage] isEqualToString:@"emoji"] ) { return NO; }
这一api回到的结论不一致,iOS12回到的为emoji而iOS14的为zh-Hans。
融合搜狗和iOS系统软件电脑键盘开展剖析得到。在输入法中填写的emoji字符串数组全是2个长短,而iOS系统软件的有的乃至做到了11个长短(选用了标识符组成),因而当对于长短为不大于2的情况下用一下方式:
if(string.length <= 2){ NSString *pattern = @"[^\\u0020-\\u007E\\u00A0-\\u00BE\\u2E80-\\uA4CF\\uF900-\\uFAFF\\uFE30-\\uFE4F\\uFF00-\\uFFEF\\u0080-\\u009F\\u2000-\\u201f\r\n]"; NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern]; BOOL isMatch = [pred evaluateWithObject:string]; return isMatch; }
这类对于非组成emoji分辨通过很多认证能够符合条件。
检索电脑输入法和百度输入法有一个独特作用,点一下标记-互联网的过程中能够发长文字,比如:https:// www 这些。可是发觉真真正正的emoji转为unicode标识符的情况下是十分有周期性的,例如:\u0020\u007E,每一个符号表情由6个uncode标识符构成。原本可以用正则表达式开展字符串匹配,可是无可奈何不交流会啊!下边贴上详细编码。
详细方式
/**是不是第三方的神情*/ (BOOL)hasEmoji:(NSString*)string{ NSString *other = @"➋➌➍➎➏➐➑➒"; //iPhone的系统软件九宫格的特殊符号 if([other rangeOfString:string].location != NSNotFound){ return NO; } NSString *pattern = @"[^\\u0020-\\u007E\\u00A0-\\u00BE\\u2E80-\\uA4CF\\uF900-\\uFAFF\\uFE30-\\uFE4F\\uFF00-\\uFFEF\\u0080-\\u009F\\u2000-\\u201f\r\n]"; NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern]; BOOL isMatch = [pred evaluateWithObject:string]; if(isMatch){ return YES; } ._block BOOL returnValue = NO; [string enumerateSubstringsInRange:NSMakeRange(0, [string length]) options:NSStringEnumerationByComposedCharacterSequences usingBlock: ^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) { const unichar hs = [substring characterAtIndex:0]; // surrogate pair if (0xd800 <= hs && hs <= 0xdbff) { if (substring.length > 1) { const unichar ls = [substring characterAtIndex:1]; const int uc = ((hs - 0dxd800) * 0x400) (ls - 0xdc00) 0x10000; //129500-129503 探索与发现的一些符号表情 //129305-129342 //129402-129499 if( (0x1d000 <= uc && uc <= 0x1f77f) || (129305 <= uc && uc <= 129342) || (129402 <= uc && uc <= 129499) || (129500 <= uc && uc <= 129503)){ returnValue = YES; } } } else if (substring.length > 1) { const unichar ls = [substring characterAtIndex:1]; if (ls == 0x20e3 || ls == 0xfe0f || ls == 0xd83c || ls == 0xfe0e) { returnValue = YES; } } else { // non surrogate if (0x2100 <= hs && hs <= 0x27ff) { returnValue = YES; } else if (0x2B05 <= hs && hs <= 0x2b07) { returnValue = YES; } else if (0x2934 <= hs && hs <= 0x2935) { returnValue = YES; } else if (0x3297 <= hs && hs <= 0x3299) { returnValue = YES; } else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50 || hs == 0xfe45 || hs == 0xfe46) { returnValue = YES; } } }]; return returnValue;}
再度检测后沒有发觉一切难题,期待小伙伴们检测的情况下发觉有什么问题还记得留言板留言call我。感谢!!!