Определение, использует ли текущая локаль неарабские цифры в iOS?

В iOS я хотел бы выполнять некоторые специфические функции, если пользователь [NSLocale currentLocale] не использует арабские цифры (т.е. не 0123456789). Как я могу проверить это условие?

1 ответ

Решение

К сожалению, нет прямого атрибута для проверки, но следующий код проверит это:

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. Однако это также может служить примером других обнаружений. Обратите внимание, что использование разделителя или символа группировки тысяч не нарушит обнаружение, поскольку используется надмножество.

Другие вопросы по тегам