2024年10月28日 星期一

使用 Intl.Collator 比對字元

 使用 Intl.Collator 比對字元

前言

  在先前的 初探 Intl.Collator 介紹了 Intl.Collator 的基本使用,發現他可以不用 new 成物件來使用,但其實它也可以 new 物件來使用,如何使用呢?在此把學習的過程做個紀錄。


內容

  範例如下

let deCollator = new Intl.Collator('de');
let twCollator = new Intl.Collator('zh-TW');
//
console.log(deCollator.compare( '功' , 'a' ) > 0);//true
console.log(twCollator.compare( '功' , 'a' ) > 0);//false


Intl.Collator 也可以 new 出物件,該物件可以拿來比對字元,透過 Intl.Collator.compare() ,參數世欲比對兩個字元,結果會是第一個字元與第二個字元的關係, 1 代表第一個字元大於第二個字元, 0 則代表同一字元, -1 則是第一個字元小於第二個字元。


參考資料

[ developer.mozilla.org ] Intl.Collator


相關文章與資料

初探 Intl.Collator

2024年10月21日 星期一

初探 Intl.Collator

 初探 Intl.Collator

前言

  Intl.Collator 提供不同地區的字碼排序,在此把學習的過程做個紀錄。


內容

  範例如下

console.log( [ '功' , 'Z' , 'z' , 'a' ,'2' , '許'].sort( Intl.Collator('de').compare) );
//["2", "a", "z", "Z", "功", "許"]
//
console.log( [ '功' , 'Z' , 'z' , 'a' , '2' , '許'].sort( Intl.Collator('zh-TW').compare) );
//["2", "功", "許", "a", "z", "Z"]
//


這次的 Intl.Collator 和之前用的 Intl 家族的用法有點不一樣,它給定區域後並不會回傳物件,回傳的是 Function ,搭配 Array.sort() 就可以完成每個區域的排序,範例的第一例的中文字明顯會排到最後,第二例明顯排在數字之後。


參考資料

[ developer.mozilla.org ] Intl.Collator

2024年10月14日 星期一

檢查 Intl.NumberFormat 是否支援區域

 檢查 Intl.NumberFormat 是否支援區域

前言

  在先前的 檢查 Intl.ListFormat 是否支援區域 介紹如何檢查支援區域,Intl.NumberFormat 也有相同的功能,在此把學習的過程做個紀錄。


內容

  範例如下

const locales = ["zh-TW", "ABC", "en-US"];
const options = { localeMatcher: "lookup" };
console.log(Intl.NumberFormat.supportedLocalesOf("zh-TW", options));//["zh-TW"]
console.log(Intl.NumberFormat.supportedLocalesOf(locales, options));//["zh-TW", "en-US"]


一樣是使用 supportedLocalesOf() 來檢查,連參數都一樣,看來這是 Intl 下的通則用法。


參考資料

[ developer.mozilla.org ] Intl.NumberFormat


相關文章與資料

檢查 Intl.ListFormat 是否支援區域

2024年10月7日 星期一

檢查 Intl.ListFormat 是否支援區域

 檢查 Intl.ListFormat 是否支援區域

前言

   Intl.ListFormat 並不是支援所有的區域,所以是可以詢問所需區域是否支援,在此把學習的過程做個紀錄。


內容

  範例如下

const locales = ["zh-TW", "ABC", "en-US"];
const options = { localeMatcher: "lookup" };
console.log(Intl.ListFormat.supportedLocalesOf("zh-TW", options));//["zh-TW"]
console.log(Intl.ListFormat.supportedLocalesOf(locales, options));//["zh-TW", "en-US"]


透過 Intl.ListFormat.supportedlocalesOf() 來詢問,要注意要把每個要詢問的區域放到陣列來詢問,也可以直接輸入區域來詢問單一區域,用起來相當簡單,不論輸入是單一區域或陣列結果都是回傳陣列,可以看到到範例輸入的無效區域沒有再結果出現。


參考資料

[ developer.mozilla.org ] Intl.ListFormat