首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

NSScanner种的基本用法

2012-09-25 
NSScanner类的基本用法NSScanner是一个类,用于在字符串中扫描指定的字符,尤其是把它们翻译/转换为数字和别

NSScanner类的基本用法

NSScanner是一个类,用于在字符串中扫描指定的字符,尤其是把它们翻译/转换为数字和别的字符串。可以在创建NSScaner时指定它的string属性,然后scanner会按照你的要求从头到尾地扫描这个字符串的每个字符。 

创建一个Scanner 

NSScanner是一个类族, NSScanner是其中公开的一类。通常,可以用scannerWithString:或localizedScannerWithString:方法初始化一个scanner。这两个方法都返回一个scanner对象并用你传递的字符串参数初始化其string属性。刚创建时scanner对象指向字符串的开头。scanner方法开始扫描,比如scanInt:,scanDouble:,scanString:intoString:。如果你要想扫描多遍,通常需要使用while循环,

例如如下代码所示:

NSString *string = @"Product: Acme Potato Peeler; Cost: 0.98 73\n\Product: Chef Pierre Pasta Fork; Cost: 0.75 19\n\Product: Chef Pierre Colander; Cost: 1.27 2\n"; NSCharacterSet *semicolonSet;NSScanner *theScanner; NSString *PRODUCT = @"Product:";NSString *COST = @"Cost:"; NSString *productName;float productCost;NSInteger productSold; semicolonSet = [NSCharacterSet characterSetWithCharactersInString:@";"];theScanner = [NSScanner scannerWithString:string]; while ([theScanner isAtEnd] == NO) {     if ([theScanner scanString:PRODUCT intoString:NULL] &&         [theScanner scanUpToCharactersFromSet:semicolonSet             intoString:&productName] &&         [theScanner scanString:@";" intoString:NULL] &&         [theScanner scanString:COST intoString:NULL] &&         [theScanner scanFloat:&productCost] &&         [theScanner scanInteger:&productSold])     {         NSLog(@"Sales of %@: $%1.2f", productName, productCost * productSold);     } }


本地化

Scanner支持本地化的扫描,可以指定语言和方言。NSScanner只在小数点分隔符上使用locale属性(以NSDecimalSeparator为key)。你可以用lcoalizedScannerWithString:创建指定locale的scanner,或者用setLocale:方法显示地指定scanner的locale属性。如果你不指定locale,scanner假定使用默认的locale。

热点排行