NSScanner
属性
1 |
|
NSScanner对象把NSString 对象的的字符解释和转化成 number和string 类型的值。在创建NSScanner对象的时候为它分配字符(string ),当你从NSScanner对象获取内容的时候,它会从头到尾遍历字符串(string)。
在 NSScanner 对象扫描字符串的时候,你可以通过设置属性charactersToBeSkipped忽略某些字符。在扫描字符串之前,那些位于忽略字符集中的字符将会被跳过。默认的忽略字符是空格和回车字符。
可以通过[[scanner string] substringFromIndex:[scanner scanLocation]]获取未扫描的字符串。
- scanLocation,下次扫描开始的位置,如果该值炒出了string的区域,将会引起NSRrangeException,该属性发生错误后重新扫描时非常有用;
- charactersToBeSkipped,在扫描时被跳过的字符集,默认是空格和回车键。被跳过的字符集优先于扫描的字符集:例如一个scanner被跳过的字符集为空格,通过scanInt:去查找字符串中的整形数时,首先做的不是扫描,而是跳过空格,直到找到十进制数据或者其他的字符。在字符被扫描的时候,跳过功能就失效了,如果你扫描的字符和跳过的字符是一样的,结果将是未知的。被跳过的字符是一个唯一值,scanner不会将忽略大小写的功能应用于它,也不会用这些字符做一些组合,如果在扫描字符串的时候你想忽略全部的元音字符,就要将字符集设置成“AEIOUaeiou”;
- caseSensitive,是否区分字符串中大小写的标志。默认为NO,注意:该设置不会应用到被跳过的字符集;
- locale,scanner的locale对它从字符串中区分数值产生影响,它通过locale的十进制分隔符区分浮点型数据的整数和小数部分。一个没有locale的scanner用非定域值。新的scanner若没有设置locale,使用默认locale。
方法
1 | <!--返回值是NSScanner对象,该对象通过扫描string完成初始化;--> |
扫描方法
1 | - (BOOL)scanInt:(nullable int *)result; |
扫描指定字符串或字符集合,scanCharacterFromSet是指扫描指定字符集合元素组合成的字符串,intoString指的是扫描出来的结果。
1
2- (BOOL)scanString:(NSString *)string intoString:(NSString * _Nullable * _Nullable)result;
- (BOOL)scanCharactersFromSet:(NSCharacterSet *)set intoString:(NSString * _Nullable * _Nullable)result;扫描字符一直到出现指定的字符串和字符集合内容 ,途中扫描的字符串内容会从introStrign参数中返回
1
2- (BOOL)scanUpToString:(NSString *)string intoString:(NSString * _Nullable * _Nullable)result;
- (BOOL)scanUpToCharactersFromSet:(NSCharacterSet *)set intoString:(NSString * _Nullable * _Nullable)result;
注意: scanner方法开始扫描,比如scanInt,scanDouble,如果你想扫描多变,通常需要使用while循环。