2010-11-16 47 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