iOS:瑞典格式的 NSNumberFormatter 将逗号替换为空格

标签 ios nsnumberformatter

我试图使用以下代码片段将 double 值格式化为货币格式

+(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).. 它正在删除点并用空格替换

任何想法将不胜感激。

最佳答案

我研究过,瑞典货币格式是# ###,## ( 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;
}

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

关于iOS:瑞典格式的 NSNumberFormatter 将逗号替换为空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34495140/

相关文章:

ios - 多线程核心数据导致 UI 挂起

ios - 快速在标签栏之间传递数据

swift3 - 如何使用 NumberFormatter() 在 swift 3 中设置 maximumFractionDigits

ios - NumberFormatter 参数标签 '(_:)' 不匹配任何可用的重载

objective-c - 防止 NSTextField 留空

objective-c - 如何使用 NSNumberFormatter 格式化 UITextField?

ios - swift iOS 11.2 WKWebView 不显示

ios - 如何使用 swift 正确检查解析中的现有对象

ios - 将数据从第二个 Controller 发送回前一个 Controller ,它显示 Google 自动完成搜索 Places

ios - NsNumberFormatter 没有给出正确的结果