列表转换器 — 一次粘贴,得到换行、逗号、数组、JSON 与 SQL IN 十种写法

粘贴任何乱七八糟的列表,换回逐行文本、逗号或分号分隔、Markdown 列表、JavaScript 数组、JSON、SQL IN 列表或 HTML 条目——顺手去空白、丢空项、去重、按自然序排序。全部计算都在你的浏览器里完成。

A · 粘贴列表

B · 同一个列表的其他写法

点一行,把它的完整结果装进下面的框

条目切分与十种写法

一种形状进来,十种形状出去

列表总是以一种形状到来,而你要的是另一种形状。设计稿里粘出来的一串标签名,最后得变成 IN (...);从表格里复制出来的一列是制表符分隔的,最后得变成 JSON 数组。原始文字先切成干净的条目,再把同一批条目摆成十种写法,你挑那一种对得上的。

内容不会被发出去:切分和拼接都是在脚本里做的,所以一串内部命名不会离开这台设备。

条目是怎么找出来的

分隔符框留空时,按下面的顺序取第一个在文本里出现的:

  1. 换行
  2. | ——两边各带一个空格的竖线,很多后台导出就是这个样子
  3. 分号
  4. 制表符——表格列粘贴出来常是这副模样
  5. 逗号

这个顺序是一个猜测,而猜测会错。一列地址每项内部都有逗号、项与项之间是换行,于是换行先赢,这一次猜对了;但同样是单行,用 | 分隔和用 | 分隔是两回事,检测器只认前者。所以列表只占一行时,请把分隔符写进框里。

分隔符框收的是字面文本,不是正则。两个空格可以,-- 可以,如果条目之间真的写着 ",",那也可以。

整理步骤,以及它们的先后

  1. 去首尾空白:几乎每次粘贴都带着它,所以默认开着。
  2. 丢掉空项:指的是去掉空白之后为空的项,默认开着;这正是让结尾多一个逗号无害的那一步。
  3. 去重:保留第一次出现的那种写法。默认关着,因为购物清单本来允许同一样东西买三回。
  4. 排序放在最后:先清干净再排,而不是排完再删出个空洞。

去重按字面精确匹配,所以 Apple 和 apple 算两项。排序不看大小写,而且是认数字的:item2 排在 item10 前面——纯字母序会把这两个搞反。

排序比的是字符码位,不是词典顺序,所以英文名会排在中文前面,中文条目也不是拼音序。中英混排的列表通常干脆别勾排序,自己排好再粘进来更省事。

十种写法各自要注意什么

写法 注意点
逐行文本 对方收文本文件时就用它。
逗号分隔 逗号后带一个空格;你的项里本来就带空格时另说。
分号分隔 多数配置格式和类 CSS 的列表要这个。
竖线分隔 wiki 表格、博客里的行内列表。
Markdown 列表 在 README 和 issue 里会渲染成真列表。
有序列表 序号是纯文本,改动内容不会自动重排。
JavaScript 数组 给了包裹字符就按它来,否则用双引号。
JSON 数组 一定是合法 JSON,双引号,内部该转义的都转义。
SQL IN 列表 单引号,并按 SQL 字符串的规则把单引号翻倍。
HTML 条目 内容已转义,所以一串标签会以文字显示而不是被当标记。

包裹字符只作用在那四种纯文本写法和 JavaScript 数组上。JSON、SQL 列表和 HTML 会被忽略——它们必须自己决定怎么加引号,否则就不成立了。

几个问题

我的列表会被传到别处吗? 不会。切分和拼接都由脚本完成,没有哪一步会把你的列表送出去。

我那一行列表怎么变成了一个条目? 多半是它的分隔符不在检测器试的那五种里,或者你写进框里的分隔符在文本里根本没有。结果那行会说明用的是哪种分隔符,而你写的那个匹配不上时也会给提示。

有大小限制吗? 输入 100000 个字符;B 区每行预览 200 个字符,点一下才把完整文本装进框里。

微信
微信
支付宝
支付宝