iOS: NSNumberFormatter 用瑞典语格式替换逗号 space
iOS: NSNumberFormatter with Swedish Format replace comma With space
我尝试使用以下代码片段将双精度值格式化为货币格式
+(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 时,它是瑞典语的甲酸盐,它给出 space 而不是点组分隔符..
例如
1900.50 将是 (1 900,50 Kr).. 而它应该是 (1.900,50).. 它正在删除点并将其替换为 space
任何想法将不胜感激。
尝试像这样使用 setGroupingSeparator
:
[formatter setGroupingSeparator:@"."];
我研究过,瑞典货币格式是# ###,## (http://www.thefinancials.com/Default.aspx?SubSectionID=curformat) - space.
反正你返回的是一个字符串,你可以替换你不想要的,见:
+(NSString *)formatAmountToCurrency:(double)amount{
[...]
NSString * priceString = [formatter stringFromNumber:@(amount)];
priceString = [priceString stringByReplacingOccurrencesOfString:@" Kr" withString:@""];
priceString = [priceString stringByReplacingOccurrencesOfString:@" " withString:@"."];
return priceString;
}
我知道,这是一个丑陋的解决方案,但它现在有效。
我尝试使用以下代码片段将双精度值格式化为货币格式
+(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 时,它是瑞典语的甲酸盐,它给出 space 而不是点组分隔符.. 例如 1900.50 将是 (1 900,50 Kr).. 而它应该是 (1.900,50).. 它正在删除点并将其替换为 space
任何想法将不胜感激。
尝试像这样使用 setGroupingSeparator
:
[formatter setGroupingSeparator:@"."];
我研究过,瑞典货币格式是# ###,## (http://www.thefinancials.com/Default.aspx?SubSectionID=curformat) - space.
反正你返回的是一个字符串,你可以替换你不想要的,见:
+(NSString *)formatAmountToCurrency:(double)amount{
[...]
NSString * priceString = [formatter stringFromNumber:@(amount)];
priceString = [priceString stringByReplacingOccurrencesOfString:@" Kr" withString:@""];
priceString = [priceString stringByReplacingOccurrencesOfString:@" " withString:@"."];
return priceString;
}
我知道,这是一个丑陋的解决方案,但它现在有效。