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