文字宽度计算
文本所有处理都在浏览器本地完成,数据不上传服务器
输入
把文件拖到这里可直接载入
输出
「这段文字有多长」有四个不同答案,它们常常差好几倍。这个工具四个一起给:显示宽度(屏幕上占几格,一个汉字 2 格)、码点数(有几个字符)、UTF-16 码元数(JavaScript 的 `.length`)、UTF-8 字节数(存进文件的字节)。 一个 emoji 最能说明差别:`😀` 的码点数是 1、UTF-16 码元数是 2、UTF-8 字节数是 4 —— 所以「限制 20 字」的表单到底按哪个口径算,只有四个都给才说得清。显示宽度复用站内终端折行的既有实现,不会与别处对不齐。 还会单独列出超出 80 / 100 列的行(代码与提交信息的常见上限)。全部在浏览器里计算,不联网、不上传。
功能
- 四种口径一次给出:显示宽度 / 码点数 / UTF-16 码元数 / UTF-8 字节数
- 显示宽度按东亚宽度算,一个汉字 2 格、一个 ASCII 1 格
- 列出超出 80 列与 100 列的行,并给出每行的实际宽度
- 可逐字符列出宽度明细,看清是哪几个字符把行撑宽了
- 与终端折行共用同一份宽度实现,不会分叉
- 按码点处理,emoji 与组合字符不会被拆坏
- 每项可单独复制
使用方法
- 把文本粘进输入框(可多行)
- 四个数字与超宽行清单立刻出现
- 需要细看就打开「字符明细」
- 点行末复制按钮取走单个数值
常见问题
- 「20 字限制」到底是哪一种?
- 这取决于对方怎么算。表单常按码点,数据库常按 UTF-16 码元,接口与存储常按字节。四种一起给出,你就能对照对方的规则判断。
- 为什么一个 emoji 会有三个不同的长度?
- 它是 1 个码点(一个字符),但在 UTF-16 里占 2 个码元(一个代理对),存成 UTF-8 又是 4 个字节。这不是 bug,是三种计数口径本身不同。
- 显示宽度是怎么算的?
- 按东亚字符宽度:汉字、假名、全角符号算 2 格,ASCII 与半角算 1 格,emoji 也算 2 格。用的是站内终端折行同一份实现,保证别处对齐一致。
- 数据会上传吗?
- 不会。全部在浏览器内存里计算,不发送任何请求,断网也能用。
相关工具
字数统计
文本中英混排的文本到底有多长?中文按字、英文按词分开统计,给出字符数、行数、字节数、阅读与朗读时长,以及会被切成几条短信。全部在本机完成。
出现次数统计
文本统计字符、词、行或指定字符串各出现多少次,按次数排序并给出占比,空格与换行会标出符号。
行长度过滤
文本按长度筛选每一行:可按字数、UTF-8 字节数或显示宽度(中日韩算 2 宽)统计,保留或删除落在区间内的行。
文本对比
文本把两份文本逐行对比,高亮标出新增、删除与未改动的行,改动按最小差异对齐,而不是整段标成变了。全部在浏览器本地完成,内容不上传。
文本清洗
文本清洗从日志或表格里复制出来的一列内容:去重行、排序、去空行、去首尾空白、去行号、合并多空格,规则逐条开关。粘贴的内容只在本机处理。
命名风格转换
文本在十四种命名风格之间转换标识符,拆词时认得 fooBarBaz 与 FOO_BAR 这类混写,连续大写也会按词拆开。全部在浏览器本地完成,不上传。