最近有一个需求,需要判断后台返回的字段是否全部是数字.首先想到的事正则,还有就是NSCharacterSet,但是NSCharacterSet不怎么会用.(等过两天,我就写文章将这个).
于是就上网查了查.果然还有别的方法.
大概也就三种方法:正则.- (BOOL) judgeIsNumberByRegularExpressionWith:(NSString *)str
{ if (str.length == 0) { return NO;
} NSString *regex = @"[0-9]*"; NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex]; if ([pred evaluateWithObject:str]) { return YES;
} return NO;
}使用NSCharacterSet.
stringByTrimmingCharactersInSet函数可以把我们指定的特殊字符过滤掉,进而判断剩下的内容,如果是空,说明全部是数字.- (BOOL)theStringIsAllNumbers:(NSString *)str {
str = [str stringByTrimmingCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]]; if(str.length > 0) { return NO;
} return YES;
}
3.用NSScanner类来判断
NSScanner是一个类,用于在字符串中扫描指定的字符。
想详细了解,可以参考NSScanner类条件判断利器详解- (BOOL) theStringIsAllNumbers:(NSString*)str{ NSScanner* scan = [NSScanner scannerWithString: str]; int val; return[scan scanInt:&val] && [scan isAtEnd];
}