要从一段文字和数字的字符串中取出电话号码,通过NSScanner能够针对这一情况快速的扫描出电话号码
- // iOS自带的扫描器(我认为来截取电话号码等数字时候特别方便,不需要用正则表达式)
- NSString *bananas = @"he 15279107716_hehehaha ";
- NSScanner *scanner = [NSScanner scannerWithString:bananas];
- NSLog(@" string = %@",[scanner string]);
- NSLog(@" startLocation = %ld",(long)[scanner scanLocation]);
- // [NSCharacterSet decimalDigitCharacterSet] 代表了十进制数字
- // scanUpToCharactersFromSet:intoString:方法(如果你不想保留这些字符,可以传递一个nil给第2个参数)
- [scanner scanUpToCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet] intoString:nil];
- NSLog(@" firstLocation = %ld",[scanner scanLocation]); // 打印出来为 3
- NSInteger anInteger;
- [scanner scanInteger:&anInteger];
- NSLog(@" figure = %ld",(long)anInteger); // 打印出来为15279107716
- NSLog(@" secLocation = %ld",[scanner scanLocation]); // 打印出来为14
- // 如果想要获取你得到想要的数值之后所有的值,通过下面方法
- NSString *string;
- string = [[scanner string] substringFromIndex:([scanner scanLocation])];
- NSLog(@" string = %@",string); // 打印出来为 _hehehaha
- // setCaseSensitive:方法设置是否忽略大小写,默认是忽略。
- // 为什么要重新创建NSScanner呢?
- // 因为在扫描到指定字符串之后,scanner的位置指向了该字符串开始处
- NSScanner *scanner1 = [NSScanner scannerWithString:bananas];
- NSString *separatorString = @"_he";
- NSString *container;
- // 以separatorString为扫面分割点,并将前面扫描的结果存进container中
- [scanner1 scanUpToString:separatorString intoString:&container];
- NSLog(@" container = %@",container); // 打印的是 container = he 15279107716