将 NSString 转换为特定于语言环境的 NSNumber
Posted
技术标签:
【中文标题】将 NSString 转换为特定于语言环境的 NSNumber【英文标题】:Converting an NSString to a locale specific NSNumber 【发布时间】:2011-01-05 10:10:14 【问题描述】:我使用的是KeyboardType = UIKeyboardTypeDecimalPad
,在某些手机上,您会在左下角看到“,”而不是“.”。这取决于手机的语言设置!用“。”版本当我使用 [NSNumber numberWithFloat:[textField.text floatValue]] 但使用“,”版本时,一切正常,它表示 2.0 表示 2,5。有人知道解决方法吗?
【问题讨论】:
【参考方案1】:您需要进行本地感知字符串转换,根据默认语言环境正确处理“2.5”和“2,5”。试试:
NSNumber *num=[NSDecimalNumber decimalNumberWithString:textField.text];
来自NSDecimalNumber Class Reference:
NSDecimalSeparator 是否是 期间(如所使用的,例如,在 美国)或逗号(原样 例如,在法国使用)取决于 在默认语言环境中。
【讨论】:
感谢您的建议! - [NSDecimalNumber decimalNumberWithString:textField.text locale:[NSLocale currentLocale]] 确实有帮助:) 另外的建议!如果您想稍后更改文本字段的值,您应该使用 [NSStringlocalizedStringWithFormat:...] 以便正确显示。【参考方案2】:NSNumberFormatter *numberFormatter = [NSNumberFormatter new];
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[numberFormatter setLocale:usLocale];
NSNumber *num = [numberFormatter numberFromString:textField.text];
您可以将语言环境设置为我们并始终使用 .注释编号。
【讨论】:
以上是关于将 NSString 转换为特定于语言环境的 NSNumber的主要内容,如果未能解决你的问题,请参考以下文章
将特定于语言环境的字符串转换为 BigDecimal 的最佳方法
根据语言环境将 NSSting 转换为 NSDecimalNumber