2014-05-22 76 views
3

我想在离线模式下将任何语言的数字转换为英文格式 这意味着如果我将阿拉伯语中的10.00换为“10.00”。我想将它转换回10.00。将任何语言的数字转换为特定语言

我发现了一些链接,但我不认为在这种情况下这是一个好主意。因为为此我必须为所有语言编写代码。 convert kABPersonPhoneProperty to arabic numbers

任何人都可以请帮我解决这个

+0

试试这个 http://stackoverflow.com/questions/11670330/how-to-display-arabic-numbers-inside-iphone-apps-without-localizing-each-digit ;) –

+0

你好Nathan Hegedus,谢谢你的回答。 我试过这个,但是如果我将阿拉伯数字转换成英文,它会重新调整NAN。 我使用10作为@“10”和区域设置作为@“en_US” –

回答

2

我以这种方式解决

BOOL isCommaUsingCountry = [自我ifCountryCodePresentIntheList]

NSString *strAfterReplacing = @""; 
if (isCommaUsingCountry) 
{ 
    //If some numbers come like “10.000,00” 
    NSString *strAfterReplacingDot = [str stringByReplacingOccurrencesOfString:@"." withString:@""]; 
    strAfterReplacing = [strAfterReplacingDot stringByReplacingOccurrencesOfString:@"," withString:@"."]; 

    //For removing Arabic comma 
    strAfterReplacing = [strAfterReplacing stringByReplacingOccurrencesOfString:@"٫" withString:@"."]; 

} 
else 
{ 
    strAfterReplacing = [str stringByReplacingOccurrencesOfString:@"," withString:@""]; 
} 

NSArray *separray = [strAfterReplacing componentsSeparatedByString:@"."]; 
NSString *numbersBeforeDecimal = @""; 
NSString *numbersAfterDecimal = @""; 
if([separray count] == 2) 
{ 
    numbersBeforeDecimal = [separray objectAtIndex:0]; 
    numbersAfterDecimal = [separray objectAtIndex:1]; 
} 

//Converting back to US format 
if([strAfterReplacing length] > 0) 
{ 
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
    NSLocale *usLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]; 
    [formatter setLocale:usLocale]; 
    NSNumber *newNum1 = [formatter numberFromString:numbersBeforeDecimal]; 
    NSNumber *newNum2 = [formatter numberFromString:numbersAfterDecimal]; 
    numbersBeforeDecimal = [NSString stringWithFormat:@"%@", newNum1]; 
    numbersAfterDecimal = [NSString stringWithFormat:@"%@", newNum2]; 
} 
NSString *combinedStr = [NSString stringWithFormat:@"%@.%@", numbersBeforeDecimal, numbersAfterDecimal];