将本地化的NSString编号(> 4位)转换回整数

时间:2013-07-04 19:37:04

标签: objective-c ios6 type-conversion

我在localizedStringWithFormat:类上使用NSString方法将七位整数转换为代码中的某个NSString,并且现在需要将其转换回整数。

由于我的应用程序已针对三个数字之后具有不同分隔符的不同区域进行了本地化(例如,美国的“。”和德国的“,”),将本地化的NSString整数值转换为整数的最佳方法是什么吗

我在我的字符串上尝试integerValue如下,但它不起作用:

// Somewhere in code:
int num = 1049000;
NSString *myLocalizedNumString = [NSString localizedStringWithFormat:@"%d", num];
// myLocalizedNumString (U.S.): '1,049,000'
// myLocalizedNumString (Germany): '1.049.000'

// Somewhere else where I have a reference to my string but none to the num:
int restoredNum = [myLocalizedNumString integerValue];
// restoredNum isn't 1049000 (it's 0, the initial value)

这样做的好方法是什么?

1 个答案:

答案 0 :(得分:1)

尽管名称NSNumberFormatter转换为两种方式,但它也是一个字符串解析器。将数字格式化程序的numberFromString属性设置为numberStyle后,使用方法NSNumberFormatterDecimalStyle可以解决您的问题。

代码可能如下所示:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
formatter.numberStyle = NSNumberFormatterDecimalStyle; 
NSInteger restoredNum = [[formatter numberFromString:myLocalizedNumString] integerValue];