cocos2d中去掉微信呢称中的表情字符(ios与android)

前端之家收集整理的这篇文章主要介绍了cocos2d中去掉微信呢称中的表情字符(ios与android)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

因项目需要,微信呢称需要去掉表情字符。找了两三天的资料。终于有答案了。在此给各位分享

ios版

  1. const char* IosHelper::removeEmoji(const char* str)
  2. {
  3. std::string strLen = str;
  4. NSString* username = [[NSString alloc] initWithBytes:str length:strLen.length() encoding:NSUTF8StringEncoding];
  5. cocos2d::log("IosHelper::removeEmoji username0 = %s",str);
  6. NSLog(@"IosHelper::removeEmoji username1 = %@",username);
  7. //NSString *regex = @"^[a-zA-Z0-9_\u4e00-\u9fa5]+$";
  8. NSString *regex = @"[\u0020-\u007e\u4e00-\u9fa5]";
  9. //NSString *regex = @"^[a-zA-Z\u4e00-\u9fa5]+";
  10. NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
  11. NSString *temp = nil;
  12. //NSLog(@"IosHelper::removeEmoji username = %d",[username length]);
  13. for(int i = 0; i < [username length]; i++)
  14. {
  15. temp = [username substringWithRange:NSMakeRange(i,1)];
  16. //NSLog(@"i = %d char = %x str = %@",i,temp,temp);
  17. if ([predicate evaluateWithObject:temp]) {
  18. //NSLog(@"This character is OK");
  19. } else {
  20. NSRange range = NSMakeRange(i,1);
  21. username = [username stringByReplacingCharactersInRange:range withString:@" "];
  22. }
  23. }
  24. NSString *withoutEmojiUsername = [username stringByReplacingOccurrencesOfString:@" " withString:@""];
  25. NSLog(@"IosHelper::removeEmoji username2 = %@",withoutEmojiUsername);
  26. const char* retStr = [withoutEmojiUsername UTF8String];
  27. cocos2d::log("IosHelper::removeEmoji username3 = %s",retStr);
  28. return retStr;
  29. }

android版
  1. public static String RemoveEmoji(String str)
  2. {
  3. String regEx = "[^\u0020-\u007e\u4e00-\u9fa5]";
  4. Pattern p = Pattern.compile(regEx);
  5. Matcher m = p.matcher(str);
  6. return m.replaceAll("").trim();
  7. }

猜你在找的Cocos2d-x相关文章