列表排序、去重与合并工具
粘贴、拖入或从其他工具接收一份列表,然后在它之上搭一套配方:排序、去重、筛选、重新编号、与第二份列表合并。每一步都能事后修改,你不添加就什么都不会运行,列表也永远不会离开浏览器。
还没有任何操作
你的列表原封未动。从上方挑一个操作,它就会落在这里,可以调整顺序、修改参数或关掉。
工作方式
把列表拿进来
粘贴、把 .txt 或 .csv 拖到页面上,或者从别的工具接收。它只是被载入——还没有对它做任何处理。
叠加操作
你挑选的每个操作都会加进配方,而不是覆盖结果,所以可以调整顺序、事后修改参数,或者关掉它看看它到底做了什么。
调整并度量
每一步都会显示它移除或改写了多少项,于是「去除重复」变成一个可核对的数字,而不是一种猜测。
带走结果
复制、下载,整理成 SQL 的 IN 列表或 JSON 数组,或者直接送进套件里的另一个工具。
是配方,不是单向编辑
结果由你的列表加上一组有序步骤推导而来。什么都不会被覆盖,所以对第二步改变主意只需一次点击,而不是从头再来。
尊重语言的排序
比较统一走一个按页面语言构建的 Intl.Collator,带自然数字顺序,并可选择忽略大小写与音标差异,而不是每次比较都新建一个排序器。
两份列表,五种合并方式
保留两者都有的、只在 A 中的、互不共有的、二者并集,或者逐项交替。需要时还能忽略大小写和空白差异。
经得起解释的抽签
打乱和抽取使用浏览器的加密随机数,因此抽签结果不可预测。若改用种子,任何知道种子的人都能复现完全相同的抽签。
大列表依然顺滑
超过两万项后整条流程会移到后台线程,超过四十万字符后则等你按下「运行」,而不是自作主张。
以你需要的形态输出
一次点击就能把结果变成带引号的 CSV、JSON 数组、SQL 的 IN 子句、JavaScript 数组、Markdown 列表或 HTML 列表项——也可以自己设定包裹方式。
快是因为造法对,不是因为功能少
排序只构建一个 Intl.Collator 并在整趟处理中重复使用。单纯的 A-Z 排序从中获益有限——浏览器本来就会缓存默认排序器——但这正是让那些有用选项变得划算的原因:面对 6 万行,带音标合并的自然数字顺序用重复使用的排序器约需 0.7 秒,而把同样的选项在每次比较时交给 localeCompare 则约需 9 秒,慢了大约十四倍。此外,超过两万项的处理会移到 Web Worker,页面在处理期间照样能滚动,而撤销历史保存的是你的步骤,不是文本的副本。
私密,因为根本无处可送
没有服务器,没有上传,不对你的内容做任何分析,处理过程中也不涉及第三方脚本。你的列表只存在于标签页的内存里;关掉标签页就是删除键。
为人们手上真实存在的列表而做
结果由你的列表加配方推导而来,因此你做的任何事都不是单向门。关掉某一步就能看清它到底贡献了什么,把它往前拖,改掉十个操作之前添加的编号分隔符,或者撤销最近三十次编辑。在输入框里打字,不会再把你的成果一笔勾销。
粘贴任意列表,然后叠加你需要的操作:按字母、数字或长度排序,去除或单独挑出重复项,删掉空项,去掉多余空白,改变大小写,按文本或 regex 筛选,重新编号,添加前缀,随机抽取获奖者,或者与第二份列表合并。每一步都是一张卡片,可以调整顺序、修改参数或关掉。
常见问题
Q可以叠加多个操作吗?+
这正是它的核心。你挑的每个操作都会变成配方里的一张卡片,自上而下依次执行。你可以重新排列卡片、事后修改参数、关掉其中一张看它做了什么,或者删掉它——结果每次都会从你的原始列表重新推导。什么都不会被覆盖。
Q编辑输入会毁掉我的操作吗?+
不会。列表和配方是分开的:改动列表,同一套配方会在新文本上再跑一遍。这正是本工具旧版唯一真正的陷阱——那时打一个字符就会把输出重置。
Q为什么排序把 item10 排在 item2 前面?+
因为普通字母顺序是逐字符比较「1」和「2」。把排序卡片切到 1-9,它就改用自然数字顺序,item2 会排在 item10 前面。「长度」按项目字数排序,Aa 则把大小写和音标视作相同。
Q怎么比较两份列表?+
添加一个「与列表 B 合并」操作,第二个输入框就会出现。它可以只保留两份列表都有的项、只保留 A 的、只保留互不共有的、二者并集,或者在两者之间交替。忽略大小写和空白是开关,所以「Ana 」和「ana」可以算作同一项。
Q打乱对抽奖来说够公平吗?+
够。它是基于浏览器加密随机源的 Fisher-Yates 洗牌,并采用拒绝采样,因此每种顺序出现的概率相同——这和常见的 Math.random 做法不同。如果你希望抽签结果可被验证,就填一个种子:事先公布它,事后任何人都能复现完全相同的结果。
Q能处理多大的列表?+
最大 8 MB 的文件,大约相当于五十万行普通文本。超过两万项后处理会移到后台线程,超过四十万字符后工具就不再自动运行,而是等你按「运行」,所以粘贴超大内容也不会卡死标签页。
Q可以手动修改某处吗?+
按下「手动编辑」,结果框就变成可编辑状态,配方随之暂停。你的手动修改有自己的撤销层级,「回到配方」则返回推导出的结果。你也可以从一开始就这样用,完全不添加任何操作。
Q我的列表会被上传到哪里吗?+
不会。每个操作都是在你标签页里运行的普通 JavaScript——不涉及服务器,也没有任何请求携带你的内容。页面加载完成后,断网也照样能用。