使用 js 實(shí)現(xiàn)不區(qū)分大小寫(xiě)和重音的字符串比較
比較和排序 Javascript 字符串是相當(dāng)常見(jiàn)的。通常,在大多數(shù)情況下,使用 String.prototype.localeCompare() 方法就足以對(duì)字符串?dāng)?shù)組進(jìn)行排序。然而,處理口音和大小寫(xiě)可能會(huì)變得棘手,并導(dǎo)致意想不到的結(jié)果。這是 Intl.Collator 發(fā)揮作用的地方,一個(gè)用于語(yǔ)言敏感字符串比較的對(duì)象。使用 Intl.Collator.prototype.compare(),您可以不考慮大小寫(xiě)或重音對(duì)字符串進(jìn)行排序,它甚至可以接受語(yǔ)言環(huán)境參數(shù)。
Javascript
const arr = ['?', 'a', 'b', 'A', 'B', '?'];const localeCompare = (a, b) => a.localeCompare(b);const collator = new Intl.Collator();const deCollator = new Intl.Collator('de');const svCollator = new Intl.Collator('sv');
示例:
arr.sort(localeCompare); // ['a', 'A', '?', '?', 'b', 'B']arr.sort(collator.compare); // ['a', 'A', '?', '?', 'b', 'B']arr.sort(deCollator.compare); // ['a', 'A', '?', '?', 'b', 'B']arr.sort(svCollator.compare); // ['a', 'A', 'b', 'B', '?', '?']
更多內(nèi)容請(qǐng)?jiān)L問(wèn)我的網(wǎng)站:https://www.icoderoad.com