Написание более естественной сортировки (чем у меня )

я добавил ответ на этот вопрос здесь: Сортировка Список в C # , который требует естественный порядок сортировки, который обрабатывает встроенные числа.

Моя реализация, однако, наивна, и вместо всех сообщений о том, как приложения не обрабатывают Unicode правильно, предполагая что-то (Турция кого-нибудь проверяет?), я подумал, что попрошу помощи в написании лучшей реализации. Или, если есть встроенный метод. NET, пожалуйста, скажите мне :)

Моя реализация ответа на этот вопрос просто просматривает строки, сравнивая символ за символом, пока не встретит цифру в обоих. Затем он извлекает последовательные цифры из обеих строк, что может привести к разной длине, дополняет самую короткую с ведущими нулями, а затем сравнивает.

Однако с этим возникают проблемы.

Например, что если у вас в строке x есть две кодовые точки, которые вместе составляют символ È, но в другой строке у вас есть только одна кодовая точка, та, которая является этим символом.

Мой алгоритм не сработает на них, поскольку он будет рассматривать диакритический код как отдельный символ, и сравните его с È из другой строки.

Может ли кто-нибудь подсказать мне, как с этим справиться? Мне нужна поддержка для указания объекта CultureInfo для решения языковых проблем, таких как сравнение «ss» с «ß» в Германии и тому подобное.

Я думаю, что мне нужно получить свой код для перечисления » настоящие символы »(я не знаю здесь настоящего термина) вместо отдельных кодовых точек.

Каков правильный подход к этому?

Кроме того, если« естественный »означает« то, как люди ожидают, что это будет работать », я добавил бы следующие вещи для размышления:

  • А как насчет даты и времени?
  • А как насчет значений с плавающей запятой?
  • Существуют ли другие последовательности, которые считаются «естественными»?
    • Как далеко это должно быть растянуто? (Eeny, meeny, miny, moe)

8
задан Community 23 May 2017 в 11:55
поделиться