列表转换器 — 一次粘贴,得到换行、逗号、数组、JSON 与 SQL IN 十种写法
粘贴任何乱七八糟的列表,换回逐行文本、逗号或分号分隔、Markdown 列表、JavaScript 数组、JSON、SQL IN 列表或 HTML 条目——顺手去空白、丢空项、去重、按自然序排序。全部计算都在你的浏览器里完成。
A · 粘贴列表
B · 同一个列表的其他写法
条目切分与十种写法
一种形状进来,十种形状出去
列表总是以一种形状到来,而你要的是另一种形状。设计稿里粘出来的一串标签名,最后得变成 IN (...);从表格里复制出来的一列是制表符分隔的,最后得变成 JSON 数组。原始文字先切成干净的条目,再把同一批条目摆成十种写法,你挑那一种对得上的。
内容不会被发出去:切分和拼接都是在脚本里做的,所以一串内部命名不会离开这台设备。
条目是怎么找出来的
分隔符框留空时,按下面的顺序取第一个在文本里出现的:
- 换行
|——两边各带一个空格的竖线,很多后台导出就是这个样子- 分号
- 制表符——表格列粘贴出来常是这副模样
- 逗号
这个顺序是一个猜测,而猜测会错。一列地址每项内部都有逗号、项与项之间是换行,于是换行先赢,这一次猜对了;但同样是单行,用 | 分隔和用 | 分隔是两回事,检测器只认前者。所以列表只占一行时,请把分隔符写进框里。
分隔符框收的是字面文本,不是正则。两个空格可以,-- 可以,如果条目之间真的写着 ",",那也可以。
整理步骤,以及它们的先后
- 去首尾空白:几乎每次粘贴都带着它,所以默认开着。
- 丢掉空项:指的是去掉空白之后为空的项,默认开着;这正是让结尾多一个逗号无害的那一步。
- 去重:保留第一次出现的那种写法。默认关着,因为购物清单本来允许同一样东西买三回。
- 排序放在最后:先清干净再排,而不是排完再删出个空洞。
去重按字面精确匹配,所以 Apple 和 apple 算两项。排序不看大小写,而且是认数字的:item2 排在 item10 前面——纯字母序会把这两个搞反。
排序比的是字符码位,不是词典顺序,所以英文名会排在中文前面,中文条目也不是拼音序。中英混排的列表通常干脆别勾排序,自己排好再粘进来更省事。
十种写法各自要注意什么
| 写法 | 注意点 |
|---|---|
| 逐行文本 | 对方收文本文件时就用它。 |
| 逗号分隔 | 逗号后带一个空格;你的项里本来就带空格时另说。 |
| 分号分隔 | 多数配置格式和类 CSS 的列表要这个。 |
| 竖线分隔 | wiki 表格、博客里的行内列表。 |
| Markdown 列表 | 在 README 和 issue 里会渲染成真列表。 |
| 有序列表 | 序号是纯文本,改动内容不会自动重排。 |
| JavaScript 数组 | 给了包裹字符就按它来,否则用双引号。 |
| JSON 数组 | 一定是合法 JSON,双引号,内部该转义的都转义。 |
| SQL IN 列表 | 单引号,并按 SQL 字符串的规则把单引号翻倍。 |
| HTML 条目 | 内容已转义,所以一串标签会以文字显示而不是被当标记。 |
包裹字符只作用在那四种纯文本写法和 JavaScript 数组上。JSON、SQL 列表和 HTML 会被忽略——它们必须自己决定怎么加引号,否则就不成立了。
几个问题
我的列表会被传到别处吗? 不会。切分和拼接都由脚本完成,没有哪一步会把你的列表送出去。
我那一行列表怎么变成了一个条目? 多半是它的分隔符不在检测器试的那五种里,或者你写进框里的分隔符在文本里根本没有。结果那行会说明用的是哪种分隔符,而你写的那个匹配不上时也会给提示。
有大小限制吗? 输入 100000 个字符;B 区每行预览 200 个字符,点一下才把完整文本装进框里。