2009-12-21 81 views
2

我得从法国数式串数目:@“30.000,00” 当我使用NSNumberFormattern解析解析语言环境特定字符串的编号?

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
NSNumber *priceNumberValue = [numberFormatter numberFromString:@30.000"]; 

它返回30,我的预期收益是30000 我尝试使用其他选项

NSLocale *vnLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"]; 
[numberFormatter setLocale:vnLocale]; 

[numberFormatter setDecimalSeparator:@","]; 

,但它仍然会返回意外的值:30

什么是正确的方式告诉NSNumberFormatter parse @“30.000,00”?

回答

3

设置区域应该工作,但你必须告诉的NumberFormatter使用分组分隔符:

[numberFormatter setUsesGroupingSeparator:YES]; 

如果不工作,下面肯定会工作:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setDecimalSeparator:@","]; 
[numberFormatter setGroupingSeparator:@"."]; 
[numberFormatter setUsesGroupingSeparator:YES]; 
NSNumber *priceNumberValue = [numberFormatter numberFromString:@"30.000,00"]; 

检查完此后,“fr-FR”语言环境似乎没有您期望的属性。但是,使用“fr-BE”语言环境可以正常工作:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"fr_BE"]; 
[numberFormatter setLocale:locale]; 
[locale release]; 
[numberFormatter setUsesGroupingSeparator:YES]; 
NSNumber *priceNumberValue = [numberFormatter numberFromString:@"30.000,00"];