Как отсортировать строки Unicode (чужие) в приложении iPhone?Сортировка строк Unicode
ответ
Спасибо, что помогли мне.
localizedCaseInsensitiveCompare
этот API будет делать сортировку по локализации. В противном случае строки разных языков будут обрабатываться как строки unicode, а сравнение не выполняется.
Вот решение:
NSComparisonResult sortLocationsForStr(NSString* str1, NSString* str2, void *context)
{
return [str1 localizedCaseInsensitiveCompare:str2];
}
[myArrayToSort sortUsingFunction:sortLocationsForStr context:nil];
Все строки в Objective-C (NSString *) являются строками Unicode. Это последовательности символов юникода (в отличие от последовательностей закодированных байтов). Вы можете отсортировать массив строк, используя методы, предоставленные NSArray.
NSArray* myArray = [NSArray arrayWithObjects:@"はじめまして", @"русский язык", @"คนอ้วน ๆ", nil];
NSArray* mySortedArray = [myArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
Это будет сортировать строки по их порядку Юникода, если у вас есть какое-либо другая сортировка условия затем обеспечить селектор сортировки пользовательского или уточнить свой вопрос.
Что вы имеете в виду "в порядке их Unicode"? Вы имеете в виду в порядке, определенном алгоритмом сортировки Unicode? Это будет порядок Юникода. Если вы имеете в виду порядок кодов, это чистый мусор и не создает алфавитный вид. – tchrist
@tchrist: +1. Я согласен, что сортировка по точечному порядку не имеет смысла. Однако этот вопрос вообще не упоминал «алфавитный порядок». Насколько я знаю, им нужен произвольный отсортированный массив для бинарного поиска? Я призвал их доработать их вопрос, и я бы уточнил свой ответ. Возможно, вы могли бы создать ответ, объясняющий, как использовать алгоритм сортировки Unicode в Objective-C? – Akusete
Если вы хотите отсортировать с помощью сортировки дескрипторов, вы также можете сортировать так:
NSSortDescriptor *sorter = [NSSortDescriptor descriptorWithKey:@"description" ascending:YES];
NSArray* mySortedArray = [myArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sorter]];
«описание» хорошо работает в качестве ключа для значений NSString, так как описание документально вернуть себе.
Преимущество перехода на маршрут NSSortDescriptor состоит в том, что вы можете иметь более одного дескриптора сортировки, или вы можете выбрать использовать нисходящую сортировку.
Если вы хотите отсортировать массив NSStrings с дескриптором сортировки, вероятно, лучше использовать 'self' в качестве ключа. http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html#//apple_ref/doc/uid/20000052-BBCGEBBJ – JeremyP
для NSString, "description" эквивалентен тем, что он всегда возвращает сам объект NSString. Я думаю, что это менее запутанно, чем «я», которое может быть неверно истолковано как класс, выполняющий вызов, а не объекты в массиве ... –
- 1. Поиск и сортировка не работает для строк unicode
- 2. Сортировка строк Сортировка
- 3. Сортировка массива со строками unicode
- 4. Сортировка строк сгруппированных строк
- 5. Сравнение и сортировка имен файлов Unicode
- 6. Сравнение строк unicode в не-unicode (испанский)
- 7. Сортировка строк
- 8. Сравнение строк Unicode?
- 9. R удаление строк Unicode
- 10. Powershell Сортировка строк, подчеркивания
- 11. Замена строк Unicode с BR
- 12. Конкатенация строк unicode и байтов
- 13. Извлечение и сравнение строк Unicode
- 14. Нормализация строк Unicode в Perl
- 15. Django шаблон unicode Сравнение строк
- 16. Преобразование unicode в список строк?
- 17. Сортировка различных строк
- 18. Сортировка списка строк
- 19. Сортировка строк SQL
- 20. Сортировка строк по возрастанию
- 21. сортировка строк данных Int
- 22. Сортировка строк с Perl
- 23. сортировка строк в файле
- 24. Сортировка массива строк
- 25. Сортировка строк, содержащих число
- 26. Сортировка 2D-списка строк
- 27. сортировка строк на java
- 28. Сортировка массива строк
- 29. Сортировка векторных строк
- 30. Сортировка списка строк нечувствительно
Вам нужно использовать алгоритм сортировки Unicode. – tchrist