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

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

ios版

const char* IosHelper::removeEmoji(const char* str)
{
    std::string strLen = str;
    NSString* username = [[NSString alloc] initWithBytes:str length:strLen.length() encoding:NSUTF8StringEncoding];
    cocos2d::log("IosHelper::removeEmoji username0 = %s",str);
    NSLog(@"IosHelper::removeEmoji username1 = %@",username);
    //NSString *regex = @"^[a-zA-Z0-9_\u4e00-\u9fa5]+$";
    NSString *regex = @"[\u0020-\u007e\u4e00-\u9fa5]";
    //NSString *regex = @"^[a-zA-Z\u4e00-\u9fa5]+";
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
    NSString *temp = nil;
    //NSLog(@"IosHelper::removeEmoji username = %d",[username length]);
    for(int i = 0; i < [username length]; i++)
    {
        temp = [username substringWithRange:NSMakeRange(i,1)];
        //NSLog(@"i = %d char = %x str = %@",i,temp,temp);
        if ([predicate evaluateWithObject:temp]) {
            //NSLog(@"This character is OK");
        } else {
            NSRange range = NSMakeRange(i,1);
            username = [username stringByReplacingCharactersInRange:range withString:@" "];
        }
    }
    
    NSString *withoutEmojiUsername = [username stringByReplacingOccurrencesOfString:@" " withString:@""];
    NSLog(@"IosHelper::removeEmoji username2 = %@",withoutEmojiUsername);
    const char* retStr = [withoutEmojiUsername UTF8String];
    cocos2d::log("IosHelper::removeEmoji username3 = %s",retStr);
    return retStr;
}

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

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...