NSScanner应用:把字符串转换成时间以及和NSCharacterSet组合

NSScanner像一个扫描仪一样,从字符串的第一个位置开始扫描, 如果扫描到特定的字符串就可以被存储或者使用.

NSScanner可以扫描很多基本数据类型:

- (BOOL)scanInt:(int *)result; 
- (BOOL)scanInteger:(NSInteger *)result NS_AVAILABLE(10_5, 2_0);
- (BOOL)scanLongLong:(long long *)result;
- (BOOL)scanUnsignedLongLong:(unsigned long long *)result NS_AVAILABLE(10_9, 7_0);
- (BOOL)scanFloat:(float *)result;
- (BOOL)scanDouble:(double *)result;
- (BOOL)scanHexInt:(unsigned *)result;                                          
- (BOOL)scanHexLongLong:(unsigned long long *)result NS_AVAILABLE(10_5, 2_0);   
- (BOOL)scanHexFloat:(float *)result NS_AVAILABLE(10_5, 2_0);                   
- (BOOL)scanHexDouble:(double *)result NS_AVAILABLE(10_5, 2_0);                 

NSScanner可以给扫描定义限制条件:

- (BOOL)scanString:(NSString *)string intoString:(NSString **)result; //把扫描的结构存入result中
- (BOOL)scanCharactersFromSet:(NSCharacterSet *)set intoString:(NSString **)result; //依据set中的字符扫描
- (BOOL)scanUpToString:(NSString *)string intoString:(NSString **)result; //扫描到某个字符串的位置
- (BOOL)scanUpToCharactersFromSet:(NSCharacterSet *)set intoString:(NSString **)result; //从某个位置开始扫描
      初始化:以String为基础

- (id)initWithString:(NSString *)string;
+ (id)scannerWithString:(NSString *)string;

例子:把一个8位的颜色字符串变成颜色 //ffffff00:白色

    NSString *timeStr = @"ffffff00";
    unsigned int r, g, b, al;
    [[NSScanner scannerWithString:[timeStr substringWithRange:NSMakeRange(0, 2)]] scanHexInt:&r];
    [[NSScanner scannerWithString:[timeStr substringWithRange:NSMakeRange(2, 2)]] scanHexInt:&g];
    [[NSScanner scannerWithString:[timeStr substringWithRange:NSMakeRange(4, 2)]] scanHexInt:&b];
    [[NSScanner scannerWithString:[timeStr substringWithRange:NSMakeRange(6, 2)]] scanHexInt:&al];
    UIColor *strColor = [UIColor colorWithRed:r/255.0 green:g/255.f blue:b/255.f alpha:(float)al/10];

NSScanner和NSCharacterSet的组合

    NSString *str = @"abc123efg";
    NSString *resultStr;
    [[NSScanner scannerWithString:str] scanCharactersFromSet:[NSCharacterSet lowercaseLetterCharacterSet] intoString:&resultStr]; //abc,就停止了
    [[NSScanner scannerWithString:str] scanUpToCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet] intoString:&resultStr];//abc,就停止了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值