Мне нужно реализовать метод, который сравнивает две строки на равенство, считая некоторые турецкие буквы латинскими (например, ı = i).Это узкое место в программе, поэтому его необходимо реализовать максимально эффективно.
Я не могу использовать NSString сравнить: сOption: nsdiactricinsensitivesearch, потому что он не работает с турецкими буквами правильно.
Вот реализация моего алгоритма:
- (NSComparisonResult) compareTurkishSymbol:(unichar)ch with:(unichar)another
{
//needs to be implemented
//code like: if (ch == 'ı') doesn't work correctly
}
- (NSComparisonResult)compareTurkish:(NSString*)word with:(NSString*)another
{
NSUInteger i;
for (i =0; i < word.length; ++i) {
NSComparisonResult result =[self compareTurkishSymbol:[word characterAtIndex:i] with:[another characterAtIndex:i]];
if (result != NSOrderedSame) {
return result;
}
}
return another.length > word.length ? NSOrderedDescending : NSOrderedSame;
}
Проблема в том, что я не могу правильно сравнить unichars.Он не сравнивает правильно символы не ascii.Как с этим бороться?