【问题标题】:Converting an NSString to a locale specific NSNumber将 NSString 转换为特定于语言环境的 NSNumber
【发布时间】:2011-01-05 10:10:14
【问题描述】:

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

【问题讨论】:

    标签: iphone ios nsstring nsnumber


    【解决方案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];
    

    您可以将语言环境设置为我们并始终使用 .注释编号。

    【讨论】:

      猜你喜欢
      • 2011-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 2011-04-27
      • 2010-11-29
      • 1970-01-01
      相关资源
      最近更新 更多