Currently I have string inputs that look like: 16904.48
, 9324.00
, 6806.10
I want my client to output: 16,904.48
, 9,324.00
, 6806.10
I have written the following code:
-(NSString*)methodChangeNumberFormat:(NSString*)strGivenValue {
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *nsNumTmp = [numberFormatter numberFromString:strGivenValue];
NSString *strNumFormatted = [numberFormatter stringFromNumber:nsNumTmp];
strNumFormatted = [NSString stringWithFormat:@"$%@",strNumFormatted];
NSLog(@"formattedNumberString: %@", strNumFormatted);
return strNumFormatted;
}
Result: 16,904.48
, 9,324
, 6,806.1
But this isn't what I want, please help me to get expected result.
Now, am following input as NSString
. But I am ready to change the input to any data type.
There is a number formatter style that does what it looks like you're trying to accomplish. Try using NSNumberFormatterCurrencyStyle
.
- (NSString *)methodChangeNumberFormat:(NSString*)strGivenValue {
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
// Set decimal style and read given value
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *numberFromString = [numberFormatter numberFromString:strGivenValue];
// Set currency style and produce formatted value
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *strNumFormatted = [numberFormatter stringFromNumber:numberFromString];
NSLog(@"formattedNumberString: %@", strNumFormatted);
return strNumFormatted;
}
Output:
formattedNumberString: $16,904.48
formattedNumberString: $9,324.00
formattedNumberString: $6,806.10