0

我使用类上的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)

什么是一种好的工作方式?

4

1 回答 1

1

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

代码可能如下所示:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
formatter.numberStyle = NSNumberFormatterDecimalStyle; 
NSInteger restoredNum = [[formatter numberFromString:myLocalizedNumString] integerValue];
于 2013-07-04T19:41:30.483 回答