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;
}
有返回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;
}
相关文章推荐
- iOS 开发判断应用是否连接WiFi,并跳转到设置中的WiFi设置页面。
- IOS开发 小技能
- ios push 推送证书及合并
- 用HTML5写的视频,在IOS应应用中可以打开,在安卓应用中打不开。
- Xcode插件神器
- iOS 页面跳转动画CATransition详细分析
- IOS开发 扫描二维码
- IOS开发 生成二维码
- iOS中如何创建一个滑出式导航面板(1)
- 【iOS】获取应用版本和语言
- ios开发不能错过的xcode插件
- iOS开发之AFNetworking使用
- iOS开发根本布景介绍
- iOS多线程(转)
- iOS 开发小技巧
- 项目适配iOS9遇到的一些问题及解决办法
- IOS开发 短信发送
- iOS开发之OCR光学识别储蓄卡以及信用卡
- iOS 开发NSPredicate,谓词过滤。用于搜索、查询。
- IOS基础