sublime text将多行文本转为["a", "b", "c"]格式需两轮正则替换:先用^(1;须提前清理空行、尾部空格及统一lf换行符。$]+)$→"$1"每行加引号,再用\r?\n→,补逗号,最后手动加[ ↩

Sublime Text 本身不生成数组,它只负责把文本“变成看起来像数组”的字符串——你真正要的,是用正则把每行包上引号、加逗号、套方括号。关键不是功能强弱,而是别漏掉换行符类型、空行、尾部空格这三处硬伤。
怎么用正则把多行转成 ["a", "b", "c"] 格式
这是最常用也最容易翻车的场景:你有一堆纯文本行,想快速转成 JSON 风格字符串数组。不能靠 join_lines,得用两轮正则替换:
- 第一轮:选中所有目标行 → 打开替换面板(
Ctrl+H)→ 开启.*(正则模式)→ 查找^(.+)$→ 替换为"$1"。注意:^和$默认不跨行,所以每行单独匹配,$1就是该行内容本身 - 第二轮:查找
\r?\n→ 替换为,(逗号+空格)。这样每行后都加了分隔符,但最后一行末尾也会多一个, - 手动在开头加
[,结尾加];如果怕手抖,可以先全选 →Ctrl+Shift+P→ 输入insert at beginning of line插入[,再用类似方式在末尾补]
示例原始文本:
apple banana cherry
替换后得到:["apple", "banana", "cherry"]
为什么 Ctrl+J 不能用来构造数组
join_lines 是拼接行为,不是结构化转换。它默认加空格,且完全无视语法边界:
- 遇到带注释的代码,比如
// item1换行item2,Ctrl+J会变成// item1 item2,注释吞掉下一行 - JSON 数组元素若含引号或嵌套结构,
Ctrl+J直接破坏格式,例如"name": "foo"换行"age": 25会被压成一行但缺逗号,JSON 解析失败 - 它不处理空行——如果原始数据里有空行,
Ctrl+J会把它们变成"",,导致数组里混入空字符串
Windows 用户特别注意换行符和 jq 路径
从 Excel、微信、日志粘贴进来的文本,换行符大概率是 \r\n;而 Sublime 默认正则 \n 匹配不到它:
- 查换行必须写
\r?\n,否则第二轮替换会漏掉部分行 - 如果你后续要用
jq验证生成的数组是否合法,确保系统 PATH 包含jq.exe所在目录;否则 Build System 报错jq: command not found不是插件问题,是环境没配好 - 文件换行符建议统一为 Unix(
LF):菜单栏File → Line Endings → Unix (LF),省得每次正则都得写\r?\n
空行和尾部空格不清理,数组就废一半
这两类干扰项不会报错,但会让结果不可用:
- 空行会被
^(.+)$忽略(因.+不匹配空行),但第二轮\r?\n替换时,空行仍会产出额外的,,最终变成["a", , "b"]—— 这不是合法 JSON - 行尾空格会导致引号内出现多余空格,比如
apple<space></space>变成"apple ",后续解析可能出错 - 清理方案:先执行
Ctrl+Shift+P→Trim Trailing White Space;再用正则^\s*$\n全局替换为空,干掉所有“伪空行”
真正麻烦的从来不是怎么敲快捷键,而是看到一段换行文本时,下意识先检查它是不是干净的——有没有空行、空格、混合换行符。这些不提前扫清,后面所有正则都白做。











