2013-01-23 35 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指示是否掃描成功與否。