将NSString转换为特定于语言环境的NSNumber

时间:2011-01-05 10:10:15

标签: iphone ios nsstring nsnumber

我正在使用KeyboardType = UIKeyboardTypeDecimalPad,而在某些手机上,您会在左下角看到“,”而不是“。”。这取决于手机的语言设置!随着“。”版本一切正常,当我使用[NSNumber numberWithFloat:[textField.text floatValue]]但是使用“,”版本时,它表示2.0为2,5。有人知道解决方法吗?

2 个答案:

答案 0 :(得分:6)

您需要执行本地感知字符串转换,根据默认语言环境正确处理“2.5”和“2,5”。尝试:

NSNumber *num=[NSDecimalNumber decimalNumberWithString:textField.text];

来自NSDecimalNumber Class Reference

  

NSDecimalSeparator是否为   期间(例如,用于   美国)或逗号(按原样)   例如,在法国使用)取决于   在默认语言环境中。

答案 1 :(得分:0)

NSNumberFormatter *numberFormatter = [NSNumberFormatter new];
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[numberFormatter setLocale:usLocale];
NSNumber *num = [numberFormatter numberFromString:textField.text];

您可以为我们设置语言环境,并始终使用。批注号。