У нас есть несколько собственных методов, предоставляемых объектом String
в JavaScript:
Все они чувствительны к регистру.
Когда речь идет об операциях без учета регистра, у нас есть несколько популярных вариантов, хотя все они далеки от идеальных.
toUpperCase()
\ toLowerCase()
Самым популярным приемом является использование toUpperCase()
\ toLowerCase()
методов.Однако они не работают должным образом для всех языков (немецкий, турецкий и т. Д.) И имеют снижение производительности при преобразовании обеих строк, даже если результат операции можно узнать, посмотрев на первую пару символов.
RegEx
es
Второй вариант - использовать RegEx
es с i
.Тем не менее, он также имеет два основных недостатка:
- нечеткий и грязный код (как это почти всегда имеет место с
RegEx
es) - накладные расходы производительности, вызванные составлением
RegEx
строка и компиляция ее в фактические RegEx
для каждой операции
Кроме того, эти решения были «изобретены» во времена древних виртуальных машин JavaScript.В настоящее время с Intl
(и другими более новыми) API и транспиляторами, такими как TypeScript и Babel, а также с библиотеками polyfill, такими как core-js
, мы можем легко использовать новейшие JavaScript API для любого приложения.
Какое решение для случаянечувствительный String
операции в es2018?
Я ищу качественный, производительный (думаю, MDN polyfills) качественный и дружественный к i18n код, предназначенный для универсального решения проблемы.