使用ES2015 / ES6 String.Prototype.Normalize(),
const str = "Crème Brulée"str.normalize("NFD").replace(/[u0300-u036f]/g, "")> "Creme Brulee"
这里发生两件事:
normalize()
根据NFD
Unipre规范形式,将组合的字形分解为简单的字形。在è
中Crème
端起来表示为e
+̀
。- 现在,使用正则表达式字符类来匹配U + 0300→U + 036F范围,在全局范围内消除变音符号变得微不足道了,Unipre标准将这些变音符号方便地归为组合变音符号 Unipre块。
请参阅评论以进行性能测试。
或者,如果您只想排序
Intl.Collator现在有足够的支持〜85 %,这里也可以使用polyfill,但我尚未对其进行测试。
const c = new Intl.Collator();["creme brulee", "crème brulée", "crame brulai", "crome brouillé","creme brulay", "creme brulfé", "creme bruléa"].sort(c.compare)["crame brulai", "creme brulay", "creme bruléa", "creme brulee","crème brulée", "creme brulfé", "crome brouillé"]["creme brulee", "crème brulée", "crame brulai", "crome brouillé"].sort((a,b) => a>b)["crame brulai", "creme brulee", "crome brouillé", "crème brulée"]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)