为nsstring的数字部分设置nslocale



有没有办法在字符串的数字部分设置区域设置?

就像nsstring是这样的:"0.510.220"它在中显示了这一点

uilabel视图:"۰.۵۱\17.76;。"

我知道如果号码有效,我可以用这个来更改nslocale:

NSDecimalNumber *someNumber = [NSDecimalNumber decimalNumberWithString:@"123"];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
NSLocale *gbLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"ar"] autorelease];
[formatter setLocale:gbLocale];

但是我怎样才能在nsstring全文中实现这一点呢?内的相同编号

字符串。我也想在+7.0 sdk上实现这一点。

不,因为您想要的不是语言环境所能做到的。"۰.۵۱."在不同的语言环境中不是"0.510.220",它只是一个不同的字符串。

字符串没有区域设置。它们由字符组成。字符为"0.510.220"的字符串包含这些字符,而不是其他字符。阿拉伯数字是不同的字符,因此您需要一个具有不同内容的字符串。

NSNumberFormatter没有将区域设置应用于字符串。它将区域设置应用于从数字到字符串的转换。这与你想要的完全不同。

您可以尝试解析字符串以找到一个看起来是数字的子字符串,在一个区域设置中使用一个NSNumberFormatter将该子字符串转换为实际数字,在另一个区域环境中使用第二个NSNumberFormatter将生成的数字转换回字符串,并通过用新字符串替换原始子字符串来构造新字符串。

最新更新