NSScanner iOS自带扫描器

         最近工作中遇到个情况,要从一段文字和数字的字符串中取出电话号码,按照以前的做法就是用正则表达式匹配出来,但是通过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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值