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;
}

Проблема в том, что он работает с такими форматами, как доллар США, евро и даже датские кроны. 50 крон).. а должно быть (1.900,50).. это удаление точки и замена ее пробелом

Любая идея будет оценена.


person Mohamed Emad Hegab    schedule 28.12.2015    source источник
comment
Я не понимаю вопроса. Разве это не формат шведского номера по умолчанию?   -  person Desdenova    schedule 28.12.2015
comment
нет, по умолчанию должно быть 1.900,00 .. точка заменяется пробелом   -  person Mohamed Emad Hegab    schedule 28.12.2015


Ответы (2)


Я изучил, и формат шведской валюты # ###,## (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;
}

Я знаю, это уродливое решение, но пока оно работает.

person J. Lopes    schedule 28.12.2015
comment
серьезно.. это глупый формат.. полностью.. в любом случае, это правильный ответ - person Mohamed Emad Hegab; 29.12.2015

Попробуйте использовать setGroupingSeparator следующим образом:

[formatter setGroupingSeparator:@"."];
person user3017488    schedule 28.12.2015