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

4

如果用户的[NSLocale currentLocale]未使用阿拉伯数字(即不是0123456789),我想在iOS中执行某些特定功能。如何检查此条件?

1个回答

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个数字。但是,这可能也可以作为其他检测的示例。
请注意,使用分隔符或千位分隔符不会破坏检测,因为使用了超集。

@Volatil3 你可能想要开始一个新的问题来解释你的具体情况。但是最初我会说一切都已经为你处理好了。使用NSString的-floatValue或-intValue从你的UITextField中获取数字,然后像平常一样处理数学运算。然后通过使用NSNumberFormatter的-localizedStringFromNumber以本地化的形式显示你的结果。 - MattyG
@Volatil3 是的,但使用格式化程序进行解析将是最佳选择。 - iOS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接