я добавил ответ на этот вопрос здесь: Сортировка Список
в C # , который требует естественный порядок сортировки, который обрабатывает встроенные числа.
Моя реализация, однако, наивна, и вместо всех сообщений о том, как приложения не обрабатывают Unicode правильно, предполагая что-то (Турция кого-нибудь проверяет?), я подумал, что попрошу помощи в написании лучшей реализации. Или, если есть встроенный метод. NET, пожалуйста, скажите мне :)
Моя реализация ответа на этот вопрос просто просматривает строки, сравнивая символ за символом, пока не встретит цифру в обоих. Затем он извлекает последовательные цифры из обеих строк, что может привести к разной длине, дополняет самую короткую с ведущими нулями, а затем сравнивает.
Однако с этим возникают проблемы.
Например, что если у вас в строке x есть две кодовые точки, которые вместе составляют символ È, но в другой строке у вас есть только одна кодовая точка, та, которая является этим символом.
Мой алгоритм не сработает на них, поскольку он будет рассматривать диакритический код как отдельный символ, и сравните его с È из другой строки.
Может ли кто-нибудь подсказать мне, как с этим справиться? Мне нужна поддержка для указания объекта CultureInfo
для решения языковых проблем, таких как сравнение «ss» с «ß» в Германии и тому подобное.
Я думаю, что мне нужно получить свой код для перечисления » настоящие символы »(я не знаю здесь настоящего термина) вместо отдельных кодовых точек.
Каков правильный подход к этому?
Кроме того, если« естественный »означает« то, как люди ожидают, что это будет работать », я добавил бы следующие вещи для размышления: