2010-11-16 126 views
1

我有一個由用戶輸入的字符串,這個字符串被視爲只有數字,例如:"3472042"如何格式化爲貨幣格式?例如:3.234,12

我那麼這個字符串轉換爲雙精度值,但我希望它被格式化爲貨幣價值,如:3.472,042

就像DecimalFormat的在Java中沒有什麼幫助。

我嘗試了一些NSNumberFormatter的東西,但沒有運氣。任何人都可以幫我一個忙嗎?

在第一次使用這樣的:

 
     NSString *string = txtOtherPower.text; 
     NSCharacterSet *removeCharSet = [NSCharacterSet characterSetWithCharactersInString:@"•€£¥./:;@#$%&*(){}[]!?\\-|_=+\"`'~^abcdefghijklmnopqrstvwxyz' '"]; 
     string = [[string componentsSeparatedByCharactersInSet:removeCharSet] componentsJoinedByString:@""]; 

這樣唯一可以接受的字符是逗號","和數字。 問題是,如果我輸入類似"2,2,2,2,,,,,1,,2"的東西,那麼它只是不會做任何事情。 而我的字符串/數字混亂。

我需要完全格式化的貨幣價值...任何想法?

回答

4

創建NSNumberFormatter,設置它的風格NSNumberFormatterCurrencyStyleNSNumberFormatterDecimalStyle(或者,如果這些樣式不爲你工作,與setPositiveFormat:配置,setNegativeFormat:等),然後將數字轉換爲字符串stringFromNumber:

有關詳細信息,請參閱此類文檔。

+0

它沒有像我想要的那樣完全格式化字符串......它將「123456789」格式化爲「12345678」而不使用點。任何想法如何解決這個問題? – 2010-11-16 13:38:01

+2

因爲美國,英國,日本和中國以這種方式使用「,」對於國際業務更爲標準,所以如果您不想遵循該標準,則應該使用NSNumberFormatter的-setLocale:和相關方法,以便在每個人的國家看起來正確。 – 2010-11-16 13:49:58

+1

您應該尊重用戶的區域設置(NSNumberFormatter會自動執行此操作),並且不會根據您的需要對其進行格式設置。 – 2010-11-16 13:51:57