iOS判断一个字符串是否全是数字

Gboy 2019-03-14 10:36:39 910
本文来自 iOS_xuanhe ,作者 Gboy

最近有一个需求,需要判断后台返回的字段是否全部是数字.首先想到的事正则,还有就是NSCharacterSet,但是NSCharacterSet不怎么会用.(等过两天,我就写文章将这个).
于是就上网查了查.果然还有别的方法.
大概也就三种方法:

  1. 正则.

- (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;
}
  1. 使用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];
}


作者:iOS_xuanhe
链接:https://www.jianshu.com/p/5ac504c28ec6