代码之家  ›  专栏  ›  技术社区  ›  Ta01

将nsstring转换为其cocoa货币等价物的最简单方法

  •  12
  • Ta01  · 技术社区  · 15 年前

    我有一个nsstring值@“78000”。我如何才能以货币格式获得它,即78000美元,它还保留一个nsstring。

    3 回复  |  直到 15 年前
        1
  •  21
  •   Andrew Grant    15 年前

    您需要使用数字格式化程序。注意:这也是为用户区域设置以正确格式显示日期/时间等的方式。

    // alloc formatter
    NSNumberFormatter *currencyStyle = [[NSNumberFormatter alloc] init];
    
    // set options.
    [currencyStyle setFormatterBehavior:NSNumberFormatterBehavior10_4];
    [currencyStyle setNumberStyle:NSNumberFormatterCurrencyStyle];
    
    NSNumber *amount = [NSNumber numberWithInteger:78000];
    
    // get formatted string
    NSString* formatted = [currencyStyle stringFromNumber:amount]
    
    [currencyStyle release];
    
        2
  •  3
  •   tbone    14 年前

    末端的小数/分可以控制如下:

    [currencyStyle setMaximumFractionDigits:0];
    

    这是文档链接,来自 apple

        3
  •  3
  •   Nite Davis    13 年前

    上面的答案将转换一个数字,但这里有一种方法可以将nsstring实际转换为货币格式。

    - (NSString*) formatCurrencyWithString: (NSString *) string
    {
        // alloc formatter
        NSNumberFormatter *currencyStyle = [[NSNumberFormatter alloc] init];
    
        // set options.
        [currencyStyle setFormatterBehavior:NSNumberFormatterBehavior10_4];
    
        // reset style to no style for converting string to number.
        [currencyStyle setNumberStyle:NSNumberFormatterNoStyle];
    
        //create number from string
        NSNumber * balance = [currencyStyle numberFromString:string];
    
        //now set to currency format
        [currencyStyle setNumberStyle:NSNumberFormatterCurrencyStyle];
    
        // get formatted string
        NSString* formatted = [currencyStyle stringFromNumber:balance];
    
        //release
        [currencyStyle release];
    
        //return formatted string
        return formatted;
    }