我们有String
对象在JavaScript中提供的多种本地方法:
String.prototype.startsWith()
String.prototype.endsWith()
String.prototype.includes()
String.prototype.indexOf()
String.prototype.lastIndexOf()
它们都是区分大小写的。
对于不区分大小写的操作,我们提供了一些流行的选项,尽管它们都不是理想选择。
toUpperCase()
\ toLowerCase()
最流行的技巧是使用toUpperCase()
\ toLowerCase()
方法。但是,它们不能在所有语言(德语,土耳其语等)上正常工作,并且即使通过查看第一对字符即可知道操作结果,也可能会转换两个字符串的性能。
RegEx
是第二个选项是将RegEx
与i
选项一起使用。但是,它也有两个主要缺点:
RegEx
es)RegEx
字符串并将其编译为实际的RegEx
会导致性能开销此外,这些解决方案是在古代JavaScript VM时代“发明”的。如今,有了Intl
(以及其他较新的)API和诸如TypeScript和Babel之类的编译器以及诸如core-js
这样的polyfill库,我们可以轻松地为任何应用程序使用最新的JavaScript API。
es2018中不区分大小写的String
操作的解决方案是什么?
我正在寻找生产(认为MDN polyfills)质量优良的i18n友好代码,该代码旨在作为解决该问题的通用解决方案。