iOS:带瑞典语格式的NSNumberFormatter用空格替换逗号

时间:2015-12-28 14:13:04

标签: ios nsnumberformatter

我试图使用以下代码段

将双值转换为货币格式
+(NSString *)formatAmountToCurrency:(double)amount{

    NSLocale *priceLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"sv-SE"] ;
    NSNumberFormatter *formatter = [NSNumberFormatter new];
    [formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
    NSString *negFormat = [NSString stringWithFormat:@"-%@",formatter.positiveFormat];
    [formatter setNegativeFormat:negFormat];
    [[PropertyManager sharedPropertyManager]setCurrencyFormatter:formatter];

    [formatter setLocale:priceLocale];
    NSString * priceString = [formatter stringFromNumber:@(amount)];

    return priceString;
}

问题是..它正在研究美元和欧元甚至丹麦克朗等格式......但是当使用sv-SE(瑞典语的形式)时,它会提供空间而不是点组分隔符。 例如 1900.50将是(1 900,50 Kr)..虽然应该是(1.900,50)..它正在移除点并用空格替换

任何想法都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

我已经研究过,瑞典货币格式是####,##(http://www.thefinancials.com/Default.aspx?SubSectionID=curformat) - 带有空格。

无论如何,你要归还一个字符串,你可以替换你不想要的东西,见:

+(NSString *)formatAmountToCurrency:(double)amount{

    [...]

    NSString * priceString = [formatter stringFromNumber:@(amount)];

    priceString = [priceString stringByReplacingOccurrencesOfString:@" Kr" withString:@""];
    priceString = [priceString stringByReplacingOccurrencesOfString:@" " withString:@"."];

    return priceString;
}

我知道,这是一个丑陋的解决方案,但它现在有效。

答案 1 :(得分:0)

尝试使用setGroupingSeparator,如下所示:

[formatter setGroupingSeparator:@"."];