按列截取
文本所有处理都在浏览器本地完成,数据不上传服务器
从每一行里取出想要的那几段。两种「列」是两件事,所以分成两个模式: 按分隔符 —— 一行是一条记录,分隔符切出来的每一段是一列。CSV、日志、`姓名,电话,地址` 这类数据用这个。 按字符位置 —— 一行是一串字符,取「第 5 个字到第 12 个字」。定宽文本、旧系统的固定字段、以及「每行只留前 20 个字」用这个。 合并成一个模式的话,「第 2 列」这句话在两份数据上指的东西不同,用户没法表达自己说的是哪一种。 列号支持负数,而且按每一行自己的长度算。 `-1` 是这一行的最后一项 —— 数据长短不齐时(有的行 3 列、有的 5 列),「最后一列」只能这么表达。取不到的项给空串而不是报错:一行有问题就让整批用不了,那太苛刻了;配合「丢弃空行」开关,这些行是留着占位还是丢掉由你决定。
功能
- 两种模式:按分隔符分列 / 按字符位置截取
- 列号支持 `2`、`2-4`、`1,3,5-7` 三种写法,逗号或空格分隔
- 负数从末尾数,且按每一行自己的长度算,长短不齐也取得对
- 分隔符支持 `\t` 转义与多字符(如 `::`)
- 取不到的项留空并保持行数一一对应,也可以勾选直接丢掉
- 按字符位置模式按字形簇数位,emoji 算一位
- 列号写法看不懂时直接报错,而不是给一份空结果
- 全程在浏览器本地计算,内容不上传
使用方法
- 把每行一条记录的数据粘贴进输入框
- 选模式:按分隔符分列,还是按字符位置截取
- 填要取的列号(例如 `2` 或 `2-4`)
- 点「复制」取走结果
常见问题
- 为什么写 `2 - 4` 会报错?
- 因为逗号与空格都算列号之间的分隔符,`2 - 4` 会被拆成三项:`2`、`-`、`4`,其中 `-` 是个读不懂的写法。范围里不能有空格,写成 `2-4` 即可。这里刻意选择报错而不是把 `-` 忽略掉:静默取错列的结果看起来完全正常,而用户要到用数据时才会发现。
- 为什么有些行跑出来是空的?
- 因为那一行取不到你要的列 —— 比如数据只有 2 列,而你要的是第 3 列。这是设计如此:取不到就空着,行数保持与输入一一对应,你才能把结果与原数据对齐着看。想让这些行直接消失,把「丢弃取不到内容的行」勾上。
- 负数是怎么数的?
- `-1` 是这一行的最后一项,`-2` 是倒数第二项。关键是它按每一行自己的长度算:三行的数据分别是 5 列、3 列、4 列时,`-1` 取到的都是各自的最后一项。这也是为什么列号必须在每一行上单独解析,而不能在整段文本上算一次。负数可以和区间一起用(`-3--1` 取最后三项)。
相关工具
表格转换
文本把 CSV、TSV 或 Markdown 表格互转:Markdown 表格、ASCII 边框表、HTML、JSON、CSV。按 RFC 4180 处理引号,列宽按显示宽度对齐。
多行合并成一行
文本把多行文本合并成一行:换行可换成空格、逗号、分号或直接删掉,空行与首尾空白先处理。适合粘进单行输入框。
行序号
文本给每行批量加序号或去掉行首编号。编号写法六种、起始值与步长可调、可补零,空行还能不占号。
文本对比
文本把两份文本逐行对比,高亮标出新增、删除与未改动的行,改动按最小差异对齐,而不是整段标成变了。全部在浏览器本地完成,内容不上传。
字数统计
文本中英混排的文本到底有多长?中文按字、英文按词分开统计,给出字符数、行数、字节数、阅读与朗读时长,以及会被切成几条短信。全部在本机完成。
文本清洗
文本清洗从日志或表格里复制出来的一列内容:去重行、排序、去空行、去首尾空白、去行号、合并多空格,规则逐条开关。粘贴的内容只在本机处理。