将 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的主要内容,如果未能解决你的问题,请参考以下文章

php 为特定于站点的插件添加Edit Buttin

将特定于语言环境的字符串转换为 BigDecimal 的最佳方法

将 NSString 转换为 NSURL 时面临的问题

根据语言环境将 NSSting 转换为 NSDecimalNumber

在 Xcode Playground 中将 NSString 转换为 CString

printf 的浮点格式标志 (%f) 仅适用于英文数字格式