排序與去重
在瀏覽器裡排序、去重、隨機打亂文字行,中文支援筆畫與拼音排序。
在你的瀏覽器中執行
請貼上一些內容。
中文不能用碼位排序
這是大多數行排序工具做錯的地方,而且在你拿它處理中文之前完全看不出來。
一般的排序是照 Unicode 碼位比對字串。對中文來說,那會產生一個沒有任何讀者認得的順序——它 既不是筆畫、不是拼音、不是部首,也不是任何字典使用的排法。它就只是那些字當初被編號的順序。
所以這裡的排序方式是一個明確的選擇,而且會標示在結果下方:
- 筆畫——繁體中文索引最常用的排法,也是台灣和香港列出姓名的方式。
- 拼音——依國語讀音的字母順序,是中國大陸的慣例,也是大多數簡體字典的編排方式。
- 碼位順序——保留下來,因為那就是一般排序的結果,而看見這個差別正是重點。
兩種都說得通、結果卻不同的排序,正是一個工具必須說清楚自己用了哪一種的時候。
數字用自然排序
預設會把 item2 排在 item10 前面。一般的字串排序剛好相反,因為逐字比對時 1 排在 2 前面
——而那幾乎不會是任何人排序檔案或版本號時想要的結果。
去重時保留第一次出現的那筆
順序本身就是資訊。移除後面的重複項會保留原本順序所帶的意義,而保留最後一筆則會悄悄把順序打亂。
預設不分大小寫,因為在姓名、標籤或網域的清單裡,Apple 和 apple 通常是同一筆。當大小寫
真的有意義時再打開它——識別碼、密碼、base64 之類。
去除前後空白是另一個選項,而且預設開啟:在任何人實際會貼進來的清單裡, apple 和 apple 都是
同一項,而多出來的結尾空白正是重複項沒被抓到的最常見原因。
隨機打亂用的是真正的亂數
Fisher–Yates 演算法,亂數來自平台的密碼學安全產生器而不是 Math.random。對一份名單來說這有點
過頭,但它不花任何代價,而且結果是真正無偏的——用 sort(() => Math.random() - 0.5) 做的簡易
打亂並不是,而且會產生肉眼看得出偏斜的順序。
沒有任何上傳
在這個頁面裡排序。貼進排序工具的清單,常常是電子郵件地址、客戶姓名或內部主機名稱。