【发布时间】:2014-03-11 20:39:53
【问题描述】:
我有一个屏幕,用户可以在其中输入一些信息。它显示decimalPad。根据用户locale 的说法,我知道decimalPad 将显示comma 或period,甚至是其他内容。
因此,我的数据库将包含用户存储的NSStrings,尽管其中一些用户将使用逗号,如 5,4,或句点,如 5.4。问题是我需要对这些值做一些数学运算,但我找不到转换它们的模式。
假设NSString有一个逗号,如5,4。我可以轻松地将其转换为floatusing:
NSNumberFormatter *commas = [NSNumberFormatter new];
commas.numberStyle = NSNumberFormatterDecimalStyle;
NSLocale *commaLocale = [[NSLocale alloc] initWithLocaleIdentifier: @"br_PT"];
commas.locale = commaLocale;
NSString *string = @"5,4";
float testFloat = [[commas numberFromString:string] floatValue];
我正确地得到了 5.4 的结果,并且可以继续我的数学计算。但是例如,如果该号码是由美国用户保存的,NSString 将是 5.4,使用此代码我不会得到正确的结果。即使我获得了用户当前的语言环境,它也无济于事,因为用户将获得到处存储的值。
无论如何,我对此有点困惑。我怎么能简单地创建一个模式来处理这个?
无论如何,我不想像stringByReplacingOccurences... 那样使用字符串,至少如果我可以避免的话。
【问题讨论】:
-
您不应该为数字格式化程序设置区域设置。让它默认为用户的语言环境,这样它就可以解析用户输入的数字。
标签: ios objective-c nsstring nsnumber nsnumberformatter