all-threads-bot

Frontender`s Spectre

Сравнение строк на основе локали в JavaScript с помощью метода localeCompare()

30 марта 2023 г., 14:52

Сравнение строк на основе локали в JavaScript с помощью метода localeCompare()

Метод String.prototype.localeCompare() в JavaScript используется для сравнения двух строк на основе локали, т.е. языка и региональных настроек пользователя.

Синтаксис:

str.localeCompare(compareString [, locales [, options]])
  • compareString: строка, которую нужно сравнить с str.
  • locales (опционально): массив или строка, содержащие информацию о локали.
  • options (опционально): объект, содержащий параметры сравнения.

Возвращает:

  • 0, если строки совпадают
  • отрицательное число, если str меньше compareString по порядку в локали
  • положительное число, если str больше compareString по порядку в локали

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

Например, если мы хотим сравнить две строки, используя языковые настройки Франции, мы можем передать соответствующую информацию в виде массива locales:

const str1 = "café";
const str2 = "cafe";

console.log(str1.localeCompare(str2, ['fr']));
// Output: 1

Здесь str1 больше, чем str2, потому что во французской локали символ é считается большим, чем e.

Метод localeCompare() также позволяет указывать опции для настройки сравнения. Например, можно указать параметр sensitivity, чтобы определить, как сравнивать символы с диакритическими знаками. Возможные значения для этого параметра: "base", "accent", "case", "variant".

const str1 = "café";
const str2 = "cafe";

console.log(str1.localeCompare(str2, ['fr'], { sensitivity: 'base' }));
// Output: 0

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

В целом, метод localeCompare() полезен при работе с многоязычными приложениями, где важно учитывать настройки локали пользователя при сравнении строк.