我有一个屏幕,用户可以在其中输入一些信息。它显示decimalPad
。根据用户locale
,我知道decimalPad
会显示comma
或period
,甚至是其他内容。
因此,我的数据库将包含从用户存储的NSStrings
,但是,其中一些将使用逗号,如5,4或句点,如5.4中所示。问题是我需要用这些值做一些数学运算,而我找不到转换它们的模式。
让我们说NSString
有逗号,如5,4所示。我可以使用:
float
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...
一样使用字符串,至少如果我可以避免这种情况。
答案 0 :(得分:1)
如果要将该值用作数字,则应将该值存储为数据库中的数字。 NSNumber
是一个完美的对象,通过您的方法,您可以获得正确的价值。当您再次向用户显示该值时,您应该使用NSNumber
再次转换NSNumberFormatter
。其他一切都将成为一种解决方法并产生负面影响。即使使用stringByReplacingOccurences...
,您也有可能使用千点或逗号......