I tried to convert an NSString like "12000.54" into "12.000,54". I wrote an NSNumberFormatter instance.
NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init] autorelease];
[formatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setGroupingSeparator:@"."];
[formatter setDecimalSeparator:@","];
But when I NSLog this :
NSLog(@"%@",[formatter stringFromNumber:[formatter numberFromString:value]]);
It prints null value. If I change my comma with a point it's working correctly. I just would like to be able to put what I want for my separators field (comma, point, slash, etc ...) and I have different outputs : 12/000,54 12.000.54 12,000,54 for example.
Do you know how I can handle this ?
So the question is valid : I'm answering it myself :)
I have a decimal value read from sqlite (e.g 12000 or 12000.54) directly transformed into NSString. I have to use different separator at some point in my code.
NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init] autorelease];
[formatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setGroupingSeparator:@""];
[formatter setDecimalSeparator:@"."];
// Decimal values read from any db are always written with no grouping separator and a comma for decimal.
NSNumber *numberFromString = [formatter numberFromString:@"12000.54"]];
[formatter setGroupingSeparator:@" "]; // Whatever you want here
[formatter setDecimalSeparator:@","]; // Whatever you want here
NSString *finalValue = [formatter stringFromNumber:numberFromString];
NSLog(@"%@",finalValue); // Print 12 000,54
Problem solved.