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