您的位置:首页 > 其它

NSString 各种类型的判断

2016-10-22 00:01 274 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nsstring