4

iOSでは、ユーザーがアラビア数字[NSLocale currentLocale]を使用していない場合(つまり、0123456789ではない場合)に特定の機能を実行したいと思います。この状態を確認するにはどうすればよいですか?

4

1 に答える 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");
}

チェックは、現在のロケール(numFmt)のロケール対応フォーマッターに対して一連の数字(nSet)を介して行われます。この値は、すべての桁数をフォーマットするために使用され、1から0未満の桁数に減らすことができます。ただし、これは他の検出の例としても役立つ場合があります。スーパーセットが使用されているため、区切り文字または千のグループ化文字を使用しても検出が中断されないことに注意してください。

于 2012-07-19T21:02:30.520 に答える