Command Palette

Search for a command to run...

如何對文字行進行排序:按字母順序、自然順序和數字順序解釋

如何對文字行進行排序:按字母順序、自然順序和數字順序解釋

T
Toolz Team
|Sep 19, 2026|13 閱讀
在 Google 上首選 Toolz。dev

文字工具 系列的一部分

排行者

按字母、數字或長度對文字行進行排序,反轉或洗牌它們,並刪除重複項、空白行和空白 - 所有這些都在您的瀏覽器中。

使用排行者

對清單進行排序聽起來像是計算中解決最多的問題,直到結果出來 file10 上面 file2,每個大寫的名字都集中在頂部, $5 滯留在價目表底部,並且"蘋果&報價;和&報價;蘋果&報價;算作兩個不同的條目。每一個都是完全按照指示進行的類型。問題是"按字母順序排列;隱藏了幾種不同的規則,選擇錯誤的規則會產生一個技術上已排序且實際上無用的清單。

本指南解釋了日常清單的重要排序規則:位元組順序、區域設定感知字母順序、嵌入數字的自然順序、真實數字順序和長度順序。它還涵蓋了修剪和刪除重複項等清潔步驟如何與排序相互作用。工作範例使用 Toolz 線分類機,顯示的每個輸出都是其程式碼產生的。

TL;DR: 若要對文字行進行排序,請每行貼上一項並選擇一種模式。 Toolz 行排序器中按字母順序排列是區域設定感知且自然的 item2 來之前 item10,忽略大小寫(預設為開啟)保留 "蘋果&報價;和&報價;蘋果&報價;一起。數字模式按每行開頭的數字排序,並將非數字行沉入底部。長度模式按字元數排序。排序前進行清理:修剪空白,刪除空白行,然後刪除保留第一次出現的重複項。這 線上線路分類器 客戶端免費,無需註冊,並可在您輸入時更新。

行排序器做什麼?

行排序器取得一個文字區塊,將每一行視為一個項目,然後根據選定的規則重新排列行。相同的工具通常會同時清理清單:修剪雜散空格、刪除空白行和刪除重複項。

Toolz 版本提供五種模式和四種清潔選項:

設定 它做什麼 預設
A 到 Z 具有自然數處理的區域設定字母順序 選定的
數字 按每行開頭的數字排序
長度 按字元數排序,最短在前
反轉 無需排序即可翻轉目前行順序
隨機播放 隨機順序;再次點擊重新洗牌
下降 將 A 的結果翻轉到 Z、數字或長度 關閉
刪除空白行 掉落空行或僅空格 打開
刪除重複項 保留每行的第一次出現 關閉
修剪空白 刪除每行兩端的空格和製表符 關閉
忽略案例 比較行作為小寫進行排序和重複 打開

輸出面板顯示有多少行出現以及有多少行被刪除,因此您可以一目了然地看到清潔選項的效果。

為什麼 file10 先於 file2?

因為純文字排序從左側一次比較一個字元的字串。 file10 和 file2 匹配四個字符,然後第五個字符是 1 在一和 2 在另一個。性格 1 之前排序 2,所以 file10 獲勝,而比較從來沒有考慮過 10 比 2 更大的事實。

自然排序透過將每輪數字讀取為數字來解決這個問題。 Toolz 行排序器和#39; a 到 Z 模式使用瀏覽器執行此操作'內建校對並開啟數字比較,這是所描述的選項 MDN 上的 String.prototype.localeCompare. 下面的訂購規則來自 Unicode 整理演算法,這就是瀏覽器決定的方式"é"排序靠近"e"而不是之後"z"。

這是三個規則下的相同五項清單:

輸入 位元組順序 (LC_ALL=C sort) 字元順序,盒裝 自然秩序(Toolz A 到 Z)
item10 Item1 Item1 Item1
item2 item10 item10 item2
Item1 item2 item2 item3
item3 item3 item3 item10
zebra zebra zebra zebra

位元組順序看跌期權 Item1 首先只是因為一個大寫 I 代碼比任何小寫字母都低。帶有折疊外殼的字元順序可以修復大寫字母,但仍然可以放置 item10 之前 item2. 自然秩序兩全其美。

案例如何影響字母順序排序?

按照原始位元組順序,每個大寫字母在每個小寫字母之前排序,因此名稱列表可以分為兩個字母順序:首先是所有大寫條目,然後是所有小寫條目。區域設定感知排序不會這樣做;它首先將字母視為同一個字母,並且僅使用大小寫來打破平局。

忽略大小寫選項更進一步,將所有內容比較為小寫。當兩行僅因情況而異時,它們會相等地進行比較,並且排序使它們保持輸入中出現的順序。這對於重複項很重要,如下所述。

使用內建樣本的工作範例

點擊並引用;載入樣本並引用;輸入是十行: banana, Apple, cherry, apple, 10, 2, Banana, date,一條空白線,並且 grape.

設定 輸出 顯示計數
預設值:A 到 Z,忽略大小寫,刪除空白行 2, 10, Apple, apple, banana, Banana, cherry, date, grape 9 行,刪除 1 行
新增 刪除重複項 2, 10, Apple, banana, cherry, date, grape 7行,刪除3行
刪除重複項,忽略大小寫 2, 10, apple, Apple, banana, Banana, cherry, date, grape 9 行,刪除 1 行
預設值加上降序值 grape, date, cherry, Banana, banana, apple, Apple, 10, 2 9 行,刪除 1 行

表中可以看到三個細節。數字以字母順序排列在字母之前,並且 2 前面 10 因為自然排序。忽略大小寫, Apple 保持領先 apple 因為它首先出現在輸入中。當忽略大小寫關閉時,瀏覽器' s 校對將小寫形式放在大寫形式之前,這是英語瀏覽器中的常見行為,並且沒有一行算作重複,因為它們不相同。下降是上升結果的完全反轉,因此平局線也會翻轉。

按字母順序與數字排序:您應該何時使用每種排序?

對於包含數字的文本,例如檔案名稱、版本標籤或街道地址,請使用字母(自然)模式。當每行都是數字或以一開頭時,請使用數字模式,並且您希望行按值排序。

數字模式以 JavaScript's 的方式讀取每行開頭的數字 parseFloat 做。它跳過前導空格,讀取可選的符號、數字、小數點和指數,並停在第一個無法繼續數字的字元處。不以數字開頭的行轉到底部並保留其原始順序。

線 使用的值 注意
42 42
-7.5 -7.5 負值和小數值有效
1e3 1000 閱讀科學記數法
12 apples 12 數字後面的文字將被忽略
1,000 1 閱讀停在逗號處
$5 不是數字 沉入底部
v2 不是數字 沉入底部

排序 $5, 42, 1,000, -7.5, 12 apples, 1e3 在數字模式下給出:

-7.5
1,000
12 apples
42
1e3
$5

該輸出中有兩個陷阱。 1,000 排序為 1,因為數以千計的分隔符號以數字結尾。先把它們去掉 尋找並替換 如果您的數據使用它們。和 $5 跌入谷底;在排序價格之前刪除貨幣符號。

以數字模式下降會反轉整個結果,這意味著非數字線從下到上移動。如果您只想要按降序排列的數字,請先清除非數字行。

按長度排序如何運作?

長度模式根據行包含的字元數對行進行排序,最短在前,最長在前,降序。等長的行保持其輸入順序。

計數是 JavaScript 字串長度,計算 UTF-16 代碼單位。對於等於可見字元數的普通字母、數字和重音拉丁字元: café 是 4。 大多數表情符號和一些稀有字元使用兩個代碼單元,因此 ok👍 算是 4,而不是 3。對於單字、名稱或 URL 列表,這很少很重要。

長度排序對於發現異常值非常方便:異常長的產品標題、截斷的條目或清單中最短的關鍵字。

清潔和分類按什麼順序進行?

這些步驟總是以固定的順序運行,順序解釋了最令人驚訝的結果:

  1. 分裂 輸入行,接受 Unix 和 Windows 行結尾。
  2. 修剪 如果修剪空格開啟,則每行。
  3. 刪除空白行,如果在。即使修剪關閉,僅包含空格的行也算空白。
  4. 刪除重複項,如果開啟。保留第一個出現。當忽略大小寫時,僅因大小寫而不同的行將計為重複,並且第一個大小寫的外殼仍然存在。
  5. 排序、反轉或隨機播放 還剩下什麼。

因為修剪是可選的並且預設關閉,所以 apple 和 apple (帶有尾隨空格)比較重複項時有兩行不同的行,除非您打開修剪。這是最常見的原因 a "刪除重複項"傳遞似乎錯過了條目。從電子表格貼上標籤也會產生相同的效果。

對於較重的重複工作,例如保留最後一次出現或僅比較每行的一部分, 重複的換行指南 更深入地涵蓋選項。

反向與下降:有什麼差別?

反向翻轉當前行順序,無需對任何內容進行排序。 c, a, b 成為 b, a, c. 先降序排序,然後翻轉,所以 c, a, b 在 A 到 Z 中,降序變為 c, b, a.

當原始順序意味著某些內容時,例如首先包含最舊條目的日誌文件,並且您首先想要最新的條目,請使用「反轉」。當您想要從 Z 到 A 或從最大到最小的排序清單時,請使用「降序」。在反向和隨機播放模式下,降序按鈕將被停用,因為它沒有什麼可翻轉的。

洗牌夠隨機嗎?

洗牌使用 Fisher-Yates 演算法,當隨機數一致時,該演算法為每個可能的順序提供相同的機會,並且它從瀏覽器中抽取這些數字's Math.random(). 這對於隨機化閱讀清單、播放清單或演示順序來說很好。它不是加密隨機來源,因此對於任何人可能有理由預測或質疑結果(例如抽獎)的任何事情來說,它都是錯誤的選擇。對於那些,一個專用的 列出隨機化器 是比較適合的。再次按一下 Shuffle 以獲得新訂單。

在線對敏感清單進行排序安全嗎?

有了這個工具,是的。在瀏覽器標籤中的 JavaScript 中,對客戶端進行排序和清理。文字不會上傳或存儲,一旦頁面加載,工具就會繼續關閉網路。電子郵件地址、客戶姓名或內部主機名稱清單永遠不會離開您的電腦。

實際的大小限制是您的瀏覽器'記憶體而不是伺服器上限。在典型的筆記型電腦上,數萬行可以立即排序。數百兆位元組的非常大的檔案可以在命令列上更好地處理。

常見的行排序錯誤有哪些?

症狀 原因 修復
file10 上面 file2 在另一個工具中 簡單的性格比較 使用自然排序(此處為 A 到 Z)或 sort -V
大寫條目全部位於頂部 位元組順序排序 使用區域設定感知排序或忽略案例
重複內容未刪除 尾隨空格或選項卡不同 開啟修剪空白
&引用;蘋果&引用;和&引用;蘋果&引用;兩者都保留了 忽略案例已關閉 開啟忽略案例
1,000 排序為 1 千分隔符號結束數字 在數字排序之前刪除逗號
價格與 $ 在底部 行不以數字開頭 首先剝離貨幣符號
降序數字列表以單字開頭 非數字線反轉至頂部 首先刪除非數字行
輸出還有一個"刪除&引用;比預期的要多 尾隨換行符創建了空的最後一行 預期的;空白行被刪除

線上線路分類器的替代方案

工具 如何排序 筆記
GNU sort sort -f (折疊盒), sort -n (數字), sort -V (自然的), sort -u (獨特的), sort -r (反轉) 可編寫腳本,處理大量文件;看 GNU 排序手冊
shuf shuf list.txt 命令列上的隨機順序
依殼中的長度排序 awk '{ print length, $0 }' list.txt | sort -n | cut -d' ' -f2- 根據區域設定計算位元組或字元
電子表格 貼到列中,數據,排序 當線路有多個字段時很好
代碼編輯器 &引用;排序行和引用;許多編輯器中的命令 行為因編輯而異
Toolz 線分類機 貼上,點擊模式 即時預覽,一次性清潔,客戶端

請注意 sort 輸出取決於 LC_ALL 或者 LANG 區域設定,這就是為什麼相同的命令可以在兩台機器上發出不同的命令。設定 LC_ALL=C 強制位元組順序。

逐步對清單進行排序

  1. 打開 文字行排序器 並貼上您的列表,每行一項。
  2. 選擇 A 到 Z 表示單字和檔案名稱,選擇數字表示數字,或選擇長度表示字元數。
  3. 如果清單是從文件或電子表格貼上來的,請開啟修剪空白。
  4. 開啟 如果您想要每個條目一次,請刪除重複項;保留忽略大小寫以合併不同的大寫字母。
  5. 檢查輸出計數和"刪除並引用;數字。
  6. 點擊複製。

如果列表還需要標準化其大寫字母,則 案例轉換器指南 解釋標題、句子等情況,以及 文字工具中心 將其餘文字實用程式收集在一處。

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!