Сортировка строк с учетом культуры

#javascript #c#

#javascript #c#

Вопрос:

В моем .NET c #-коде я хотел бы отсортировать некоторые строки — в частности, в настоящее время мое приложение поддерживает два языка: английский и китайский (возможно, больше в будущем). И я хотел бы вернуть список имен на сторону клиента.

прямо перед тем, как список строк будет возвращен клиенту, я хотел бы отсортировать строки.

Мне в основном нужно делать то, что Javascript делает для «localeCompare». Это что-то, что можно сделать в коде C #? Я нашел кое-что, связанное с CultureInfo, но мне кажется, что мне нужно динамически устанавливать это значение.

Ответ №1:

Существует Sort перегрузка, принимающая an IComparer , которая может использоваться с учетом культуры.

Ваш клиент должен передать желаемый язык через заголовок запроса Accept-Language при запросе API, или это может быть утверждение или настройка для вошедшего в систему пользователя.

Вот пример в вашем контроллере на стороне API:

 var requestLanguage = "zh-Hans"; // pass the correct one

namesList.Sort(StringComparer.Create(new CultureInfo(requestLanguage), true));
  

true Параметр указывает, что он чувствителен к регистру. Вы можете найти cultureinfo в MSDN.

Документы о компараторе строк.