使用NSRange提取double值

时间:2013-01-23 22:41:47

标签: objective-c substring nsrange

我有一个字符串“Number:0.3456” 如何删除“Number:”部分以使用NSRange从中提取双精度值“0.3456”?

3 个答案:

答案 0 :(得分:1)

如果Number: X.XXX是固定模式,您可以执行类似

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

如果您真的想使用NSRange,可以执行类似

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

主要区别在于第二个示例将从原始字符串中删除 {/ 1}}字符串的每个,而第一个将删除前缀。

答案 1 :(得分:0)

我建议你使用[NSScanner scanDouble:]

答案 2 :(得分:0)

只要先设置扫描位置,就可以使用NSScanner:

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

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

请记住,scanDouble:会返回YESNO来指示扫描是否成功。