2013-07-04 49 views
2

我想將此字符串:1000000轉換爲以下格式:10,00,000但是,我得到的輸出如下:1,000,000這是錯誤的。我需要10,00,000iOS中不同語言環境的貨幣格式化程序

我的代碼:

NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 
     inputnumber = newString; 
NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init]; 
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
[formatter setCurrencySymbol:@""]; 
[formatter setMaximumFractionDigits:2]; 
[formatter setMinimumFractionDigits:2]; 
[formatter setUsesGroupingSeparator:YES]; 
[formatter setCurrencyGroupingSeparator:@","]; 
// [formatter setCurrencyDecimalSeparator:@"."]; 
[formatter setGroupingSeparator:@","]; 
NSNumber *num = [NSNumber numberWithDouble:[inputnumber doubleValue]]; 
inputnumber = [formatter stringFromNumber:num]; 
+0

將輸入字符串永遠是7個位數? – MJN

+0

您需要爲此編寫自己的格式化程序 – Tala

+0

我很好奇爲什麼你需要這樣的逗號? – Wain

回答

7

這是印度的貨幣格式。因此,您必須將@"en_IN"設置爲currencyFormatter Locale

工作代碼:

NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init]; 
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
[currencyFormatter setCurrencySymbol:@""]; 
[currencyFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_IN"] autorelease]]; 
NSLog(@"Final Value :: %@", [currencyFormatter stringFromNumber:[NSNumber numberWithFloat:1000000]]); 
2

對於斯威夫特檢查:

let initalValue:NSString = "1000000" 
    let currencyFormatter = NSNumberFormatter() 
    currencyFormatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle 
    currencyFormatter.locale = NSLocale (localeIdentifier: "en_IN") 
    let formattedValue = currencyFormatter.stringFromNumber(initalValue.doubleValue) 
    print(formattedValue)