NSScanner 使用实例

NSScanner的应用实例NSScanner是系统提供的一个可以扫描字符串中内容的方法,由于location这个属性的特性,NSScanner常常配合循环使用先看看NSScanner的几个基本属性@property (readonly, copy) NSString *string; //通过这个属性可以用getter方法导出scanner初始化时设置string @property NSUIn
摘要由CSDN通过智能技术生成

NSScanner的应用实例

NSScanner是系统提供的一个可以扫描字符串中内容的方法,由于location这个属性的特性,NSScanner常常配合循环使用

先看看NSScanner的几个基本属性

@property (readonly, copy) NSString *string; //通过这个属性可以用getter方法导出scanner初始化时设置string
@property NSUInteger scanLocation; //最重要的属性,代表scanner目前扫描的位置,可以使用setter方法
@property (nullable, copy) NSCharacterSet *charactersToBeSkipped; //扫描时需要跳过的字符
@property BOOL caseSensitive; //忽略大小写区别

NSScanner的常用方法
1.scanString: intoString:
在scanner中搜索目标字符串,如果第一个字符和目标字符串相等,return 1,如果第一个字符和目标字符串不相等,return 0.intoString为返回的目标字符串(也可以设置为nil),scanner.scanLocation值变成目标字符串后面一位
2.scanUpToString: intoString:
在scanner中搜索目标字符串,如果第一个字符和目标字符串相等,return 0,intoString为返回的目标字符串(也可以设置为nil),scanner.scanLocation值保留目标字符串前面一位

Scanner的实际应用

#import "NSString+Scanner.h"  //创建了一个NSString的Category,方便方法的调用

@implementation NSString (Scanner)
//1.查找某个string里是否含有int值
- (BOOL)isPureInt
{
    NSScanner *scanner = [[NSScanner alloc] initWithString:self];
    int intValue;
    return [scanner scanInt:&intValue] && [scanner isAtEnd];
}

//2.查找给定String中所含有的全部浮点数值
- (void)scanFloatValue
{
    NSScanner *scanner = [[NSScanner alloc] initWithString:self];
    float floatValue;
    while (![scanner isAtEnd])
    {
        if ([scanner scanFloat:&floatValue])
        {
            NSLog(@"floatValue = %.2f",floatValue);
        }
        scanner.scanLocation++;//由于scanLocation的特殊机制,这里需要注意的是如果最后字符串最后一位是浮点数类型的话会crash,在最后一位拼接上一个字母就可以正常运行了.
    }
}

在main. m中可以用NSString的对象直接调用方法

#import <UIKit/UIKit.h>
#import "AppDelegate.h"
#import "NSString+Scanner.h"
int main(int argc, char * argv[]) {
NSString *intString = @"211231233423523511";
    if ([intString isPureInt])
    {
        NSLog(@"是纯int");
    }
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值