NSScanner

使用NSScanner类实现字符串扫描与十六进制转十进制

NSScanner:该类主要实现对字符串扫描。并且该扫描必须从头到尾扫描(也可以跳到指定的地方进行扫描),开始扫描必须应用到函数,连续的数字之间可以用空格隔开,如:35 15.2 451,此时可以连续获得3个数据,而不用再去扫描空格。

是否扫描空格:

 

  

注意:在扫描的时候,如果 空格是不需要扫描的,那么将会忽略空格。

如下代码:

 

 1  NSString * string =  @" my age is d 23    34.0 ";
 2      int i;
 3      float f;
 4     NSString *theString =  @" my age is ";
 5     NSString *resultString;
 6     NSString *dString;
 7     
 8      // 扫描字符串
 9      NSScanner *theScanner = [NSScanner scannerWithString: string ];
10            [theScanner scanString:theString intoString:&resultString];
11     NSLog( @" resultString is %@ ",resultString); 
12      
13      // 扫描字符串中的d字符
14      [theScanner scanString: @" d " intoString:&dString];
15     NSLog( @" d string is %@ ",dString);
16     
17     
18      // 扫描字符串中的整型数据
19      [theScanner scanInteger:&i];
20     NSLog( @" intergent is %d ",i);
21        // 扫描字符串中的浮点型数据
22      [theScanner scanFloat:&f];

23     NSLog(@"float is %f",f);

 

 

输出的结果为:

 2012-08-18 16:01:26.419 ScannerDemo[1225:f803] resultString is my age is

2012- 08- 18  16: 01: 29.360 ScannerDemo[ 1225:f803] d  string  is d
2012- 08- 18  16: 01: 33.735 ScannerDemo[ 1225:f803] intergent  is  23
2012- 08- 18  16: 01: 35.359 ScannerDemo[ 1225:f803]  float  is  34.000000

 

 解析:在字符串

string 中,“is”和“d”之间的空格不需要扫描的,然后我定义了一个
theString 字符串,该字符串之后没有空格,然后扫描 theString d,此时空格没有计入扫描的范围内,所以扫描会忽略空格。

 

 

一、将十六进制转化为十进制。如下:

 unsigned int r;

NSString *rString = @"EF"; 

    [[NSScanner scannerWithString:rString] scanHexInt:&r]; 

 其中:rString表示十六进制的字符。r表示十六进制对应的十进制。

 

详见 demo 

 

转载于:https://www.cnblogs.com/85538649/archive/2012/08/09/2630408.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值