0

localizedStringWithFormat:クラスのメソッドを使用しNSStringて、コードのどこかで 7 桁の整数を NSString に変換しましたが、今すぐ整数に戻す必要があります。

私のアプリは、3 桁の後の区切り記号が異なる地域ごとにローカライズされているため (たとえば、米国では「.」、ドイツでは「,」)、ローカライズされた 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 に答える