首页 文本工具 文本行排序

📊 文本行排序

升序/降序/自然排序/随机/反转

Ad Space
📋 排序结果
0
总行数
0
唯一行数
Ad Space

什么是文本行排序工具?

文本行排序工具是一款对多行文本按行进行排序的在线工具。在编程和数据处理中,经常需要对列表、配置项、日志条目等文本数据进行排序。无论是字母表排序(A-Z/Z-A)、数字大小排序、按行长度排序,还是自定义排序规则,本工具都能快速完成。相比在 Excel 中操作或使用命令行 sort 命令,在线排序工具无需切换环境,粘贴文本后立即得到排序结果。工具支持多种排序模式:升序、降序、不区分大小写排序、自然排序(正确处理数字后缀如 file1, file2, file10)、按行长度排序、随机打乱顺序等。所有操作在浏览器端完成,数据安全不上传。

如何使用文本行排序工具

  1. 步骤一:粘贴文本内容 — 将需要排序的多行文本粘贴到输入框中。每行作为独立的排序单元,工具自动按换行符分割。
  2. 步骤二:选择排序方式 — 选择排序类型:字母升序(A→Z)、字母降序(Z→A)、数字排序、行长度排序、自然排序等。还可以勾选"去除空行"和"去重"选项。
  3. 步骤三:获取排序结果 — 排序结果实时显示在输出区。复制结果或下载为文件。工具同时显示排序统计信息(总行数、非空行数等)。

常见使用场景

场景一:配置文件中的依赖排序

package.json 中的 dependencies 需要按字母顺序排列以保持 Git 差异的清晰性。使用排序工具对依赖列表进行字母排序,避免因排列顺序不同产生无意义的代码变更。

场景二:日志文件时间排序

将多个来源的日志合并后,按时间戳排序以获得正确的事件顺序。对于格式统一的日志(如 ISO 8601 时间戳在前),字母排序即为时间排序。

场景三:CSS 属性排序

按照团队规范对 CSS 属性进行排序(如定位属性→盒模型→排版→视觉属性)。将属性列表粘贴后排序,再按预定义的顺序重新排列,保持代码风格统一。

技术原理

JavaScript 的 Array.prototype.sort() 方法使用 TimSort 算法(V8 引擎),时间复杂度 O(n log n)。默认的 sort() 将元素转为字符串后按 UTF-16 码元值比较,这会导致大写字母排在小写字母前面(因为 'A'(65) < 'a'(97))。不区分大小写排序需要自定义比较函数。localeCompare() 方法支持本地化的字符串比较,能正确处理 Unicode 字符和中文拼音排序。

// 多种排序实现
function sortLines(text, mode) {
  const lines = text.split('\n');
  switch(mode) {
    case 'asc':
      return lines.sort((a, b) => a.localeCompare(b));
    case 'desc':
      return lines.sort((a, b) => b.localeCompare(a));
    case 'numeric':
      return lines.sort((a, b) => parseFloat(a) - parseFloat(b));
    case 'length':
      return lines.sort((a, b) => a.length - b.length);
    case 'natural':
      return lines.sort((a, b) => 
        a.localeCompare(b, undefined, { numeric: true })
      );
  }
}

最佳实践与注意事项

常见问题

Q:默认排序为什么大写字母排在小写前面?

A>JavaScript 默认按 UTF-16 编码值比较,大写字母 A-Z 编码值 65-90,小写 a-z 为 97-122。所以 'Z'(90) < 'a'(97)。解决方法:使用 localeCompare() 或转换为统一大小写后再比较。

Q:什么是"自然排序"?

A>自然排序(natural sort)正确处理数字后缀:file2 排在 file10 前面(而不是按字符比较把 file10 排在 file2 前面)。通过 localeCompare 的 { numeric: true } 选项实现,它会将连续数字视为一个整体进行比较。

Q:中文文本能按拼音排序吗?

A>可以。使用 a.localeCompare(b, 'zh-CN') 按拼音排序中文。但需要注意多音字问题——"重"可能排为 chóng 或 zhòng。对于精确的拼音排序需求,建议使用 pinyin 库先转换为拼音再排序。

Q:如何按特定规则排序(如按文件扩展名)?

A>可以使用自定义排序函数。例如按扩展名排序:提取每行的扩展名作为排序键,然后比较。本工具暂不支持自定义排序键,建议使用代码实现:lines.sort((a,b) => ext(a).localeCompare(ext(b)))

Q:排序操作会影响原始文本的换行符吗?

A>工具会保留换行符。输出统一使用 \n(LF)格式。如果你的原始文本使用 \r\n(CRLF,Windows 格式),排序后会被统一为 \n。如需保持 CRLF 格式,可以在复制后使用编辑器转换。

常见问题

什么是自然排序?
自然排序是按照人类阅读习惯的排序方式,例如 "file2.txt, file10.txt, file20.txt" 会按数字大小排序为 "file2.txt, file10.txt, file20.txt",而不是错误的 "file10.txt, file2.txt, file20.txt"。
字符串排序和数字排序有什么区别?
字符串排序按字符的Unicode编码进行比较(如"10"会排在"2"前面),数字排序则将内容转换为数字进行比较。长度排序按字符串长度由短到长排列。
可以同时去重吗?
可以的。勾选"去重"选项后,排序的同时会自动去除重复的行,保留首次出现的项。
随机打乱是真正的随机吗?
是的,使用Fisher-Yates洗牌算法生成真正随机的排列,每次点击随机打乱都可能产生不同的结果。

🔥 同类热门工具

🏷️ 相关标签

纯前端免费文本工具隐私安全在线工具