2013-01-23 36 views

回答

1

如果Number: X.XXX是一个固定的模式你,如果你真的想使用NSRange你可以做简单的可以这样做

NSString * string = @"Number: 0.3456"; 
NSString * prefix = @"Number: "; 
NSString * doubleString = [string substringFromIndex:prefix.length]; 
double yourDouble = [doubleString doubleValue]; 

NSString * string = @"Number: 0.3456"; 
NSString * substringToRemove = @"Number: "; 
NSRange substringRange = [string rangeOfString:substringToRemove]; 
NSString * doubleString = [string stringByReplacingCharactersInRange:substringRange 
                  withString:@""]; 
double yourDouble = [doubleString doubleValue]; 

的主要区别在于第二个例子将删除发生的Number:字符串从原来的,而第一个将删除前缀。

+0

'-rangeOfString:'不返回'NSRange'指针。 – CodaFi

+0

我的不好,我忘了'NSRange'是一个普通的C结构。感谢您指出 –

0

我建议你使用[NSScanner scanDouble:]

+0

这不会首先解析出数字。 – CodaFi

0

您可以使用NSScanner,只要你设置扫描位置,第一:

double result; 
NSString *str = @"Number: 0.3456"; 
NSScanner *scanner = [NSScanner scannerWithString:str]; 

[scanner setScanLocation:[@"Number: " length]]; 
[scanner scanDouble:&result]; 

记住scanDouble:返回YESNO指示是否扫描成功与否。