NSString 各种类型的判断
来源:互联网 发布:mac导出iphone照片 编辑:程序博客网 时间:2024/05/16 12:47
1、将字符串中过滤表情的方法
- 第一种方法:简洁
NSRegularExpression *regularExpression = [NSRegularExpression regularExpressionWithPattern:@"[^\\u0020-\\u007E\\u00A0-\\u00BE\\u2E80-\\uA4CF\\uF900-\\uFAFF\\uFE30-\\uFE4F\\uFF00-\\uFFEF\\u0080-\\u009F\\u2000-\\u201f\r\n]" options:0 error:nil]; NSString *str = @"你好��,我是��,��❄️,我是��,你是沙!"; NSString *noEmojiStr = [regularExpression stringByReplacingMatchesInString:str options:0 range:NSMakeRange(0, str.length) withTemplate:@""]; NSLog(@"过滤后的文字:%@",noEmojiStr);
- 第二种方法:可以过滤所有的表情
- (NSString *)stringContainsEmoji:(NSString *)string{ __block BOOL returnValue = NO; __block NSString* str; // 临时记录str 替代 string [string enumerateSubstringsInRange:NSMakeRange(0, [string length]) options:NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString * _Nullable substring, NSRange substringRange, NSRange enclosingRange, BOOL * _Nonnull stop) { unichar hs = [substring characterAtIndex:0]; if (str.length > 1) { str = str; } else { str = string; } // 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 <= 0x1f918) { str = [str stringByReplacingOccurrencesOfString:substring withString:@""]; NSLog(@"STR :%@",str); returnValue = YES; } } } else if (substring.length > 1) { const unichar ls = [substring characterAtIndex:1]; if (ls == 0x20e3 || ls == 0xFE0F || ls == 0xd83c) { returnValue = YES; str = [str stringByReplacingOccurrencesOfString:substring withString:@""]; NSLog(@"STR %@",str); } } else { // non surrogate if (0x2100 <= hs && hs <= 0x27ff) { if (0x278b <= hs && 0x2792 >= hs) { returnValue = NO; } else { returnValue = YES; str = [str stringByReplacingOccurrencesOfString:substring withString:@""]; NSLog(@"STR %@",str); } } 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 == 0xd83e) { returnValue = YES; } } }]; return str;}
2、判断字符串中是为纯数字
#pragma mark - 判断字符串是否为纯数字- (BOOL)isPureNumandCharacters:(NSString *)string{ string = [string stringByTrimmingCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]]; if(string.length > 0) { return NO; } return YES;}
3、判断字符串是否为邮箱号码
-(BOOL) validateMobile:(NSString *)mobile{ //手机号以13, 15,18开头,八个 \d 数字字符 NSString *phoneRegex = @"^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$"; NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex]; return [phoneTest evaluateWithObject:mobile];}
4、判断字符串是否为手机号码
-(BOOL) validateMobile:(NSString *)mobile{ //手机号以13, 15,18开头,八个 \d 数字字符 NSString *phoneRegex = @"^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$"; NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex]; return [phoneTest evaluateWithObject:mobile];}
5、判断字符串是否为 6-16位数字或字母的密码
-(BOOL)checkPassword:(NSString *)password{ NSString *pattern = @"^[A-Za-z0-9]{6,16}$"; NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",pattern]; BOOL isMatch = [pred evaluateWithObject:password]; return isMatch;}
最后分享一个关于正则表达式的链接:
http://www.cnblogs.com/yipingios/p/5536032.html
0 0
- NSString 各种类型的判断
- NSString 的各种转换
- 如何判断NSString是数值类型
- NSString的各种修改方法
- ios判断NSString的length
- 判断两个nsstring类型的字符串不相等的代码怎么写
- 判断各种浏览器的内核和 移动端的类型
- JS判断各种浏览器类型
- 判断各种输入值类型的正则表达式
- sql判断各种类型的东西是否存在
- NSString类型的更改大小写
- NSString的各种用法总结(创建、截取、判断比较、转化数据类型、拼接、替换、添加、追加、读取、写入、删去、...
- NSString的各种用法总结(创建、截取、判断比较、转化数据类型、拼接、替换、添加、追加、读取、写入、删去、改变)
- Objective C - NSString & NSMutableString 的各种使用
- NSString的各种操作,拼接、搜索、截取
- 如何判断各种浏览器的类型 及ie浏览器的类型。
- NSString类型的的data 怎么转换
- Java 判断操作系统类型(适用于各种操作系统)
- C语言函数指针之回调函数
- 数组的定义
- 易错的指针问题
- lua笔记1
- SPOJ GSS 1~8
- NSString 各种类型的判断
- TCP/IP详解学习笔记(7)-广播和多播,IGMP协议
- do-while循环
- 正则表达式学习
- 设计模式之工厂模式
- jsp访问数据库(学生数据表)
- 螺旋线
- Cmake创建交叉编译应用(二)
- JAVA 枚举类的初步理解