您的位置:首页 > 移动开发 > IOS开发

IOS开发 判断是否是非法字符 例如表情符号

2015-12-14 14:01 651 查看
//判断有没有非法字符
有返回YES没有返回NO

- (BOOL)isContainsEmoji:(NSString *)string {

__block BOOL isEomji =
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 - 0xd800) *
0x400) + (ls - 0xdc00) +
0x10000;

if (0x1d000 <= uc && uc <=
0x1f77f) {

isEomji = YES;

}

}

} else if (substring.length >
1) {

const
unichar ls = [substring characterAtIndex:1];

if (ls ==
0x20e3) {

isEomji = YES;

}

} else {

// non surrogate

if (0x2100 <= hs && hs <=
0x27ff && hs != 0x263b) {

isEomji = YES;

} else
if (0x2B05 <= hs && hs <=
0x2b07) {

isEomji = YES;

} else
if (0x2934 <= hs && hs <=
0x2935) {

isEomji = YES;

} else
if (0x3297 <= hs && hs <=
0x3299) {

isEomji = YES;

} else
if (hs == 0xa9 || hs ==
0xae || hs == 0x303d || hs ==
0x3030|| hs == 0x2b55 || hs ==
0x2b1c || hs == 0x2b1b || hs ==
0x2b50|| hs ==0x231a ) {

isEomji = YES;

}

}

}];

return isEomji;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: