确定当前区域设置是否在iOS中使用非阿拉伯数字?

时间:2012-07-16 13:07:36

标签: ios cocoa-touch localization nslocalizedstring nslocale

在iOS中,如果用户[NSLocale currentLocale]不使用Arabic Numerals(即不是0123456789),我想执行一些特定功能。我该如何检查这种情况?

1 个答案:

答案 0 :(得分:6)

不幸的是没有直接属性可以检查,但是下面的代码会检查它:

NSCharacterSet *nSet = [NSCharacterSet characterSetWithCharactersInString:@"1234567890"];
NSNumberFormatter *numFmt = [[NSNumberFormatter alloc] init];
NSDecimalNumber *value = [NSDecimalNumber decimalNumberWithString:@"1234567890"];
NSCharacterSet *fSet = [NSCharacterSet characterSetWithCharactersInString:[numFmt stringFromNumber:value]];
if([fSet isSupersetOfSet:nSet]==NO){
    NSLog(@"No arabic digits");
}

通过一组数字(nSet)对当前语言环境(numFmt)的语言环境感知格式化程序进行检查。该值用于格式化所有数字的数字,可以减少到少于1到0的数字。但是,这也可以作为其他检测的示例。 请注意,使用分隔符或千位分组字符不会破坏检测,因为正在使用超集。