В JavaScript часто возникают ситуации, когда необходимо сравнить две строки без учета регистра. Например, при создании функции поиска на сайте, где пользователь может ввести искомое слово любым регистром, а результатом должны быть все совпадения, независимо от того, в каком регистре они записаны на сайте.
let str1 = "JavaScript"; let str2 = "javascript";
В таком случае простое сравнение str1 == str2
вернет false
, хотя для задачи поиска это некорректный результат. Как же решить эту проблему?
Использование метода toLowerCase()
Один из самых простых и распространенных способов — привести обе строки к одному регистру перед сравнением. Для этого можно использовать метод toLowerCase()
(или его аналог toUpperCase()
).
let str1 = "JavaScript"; let str2 = "javascript"; if (str1.toLowerCase() == str2.toLowerCase()) { console.log("Строки равны"); } else { console.log("Строки не равны"); }
В этом случае консоль выведет сообщение «Строки равны», что является ожидаемым результатом.
Использование метода localeCompare()
Ещё один способ — использовать метод localeCompare()
, который сравнивает строки с учетом локали и может не учитывать регистр. Для этого достаточно передать в метод параметр {sensitivity: 'base'}
.
let str1 = "JavaScript"; let str2 = "javascript"; if (str1.localeCompare(str2, undefined, {sensitivity: 'base'}) == 0) { console.log("Строки равны"); } else { console.log("Строки не равны"); }
Такой способ сравнения строк также выдаст ожидаемый результат «Строки равны».
Оба представленных способа позволяют сравнивать строки без учета регистра, что может быть полезно при реализации различных функциональных возможностей на JavaScript.
Добавить комментарий