字数统计工具
实时统计文本的字符数、词数、行数、段落数等信息
基本统计
结构统计
阅读预估
什么是字数统计?
字数统计工具用于实时计算文本的各种统计数据,包括字符数、单词数、行数等。无论您是在写文章、论文、代码注释还是社交媒体内容,这个工具都能帮助您快速了解文本的基本信息。本工具支持中英文混合统计,能够智能识别中文字符和英文单词,并分别进行计数。同时还提供阅读时间预估,帮助您了解读者需要多长时间读完您的内容。 用于发布或多语言内容时,应检查语言、字符集、上下文和特殊情况后再复用。
使用方法
基本操作
- 在左侧文本框中输入或粘贴文本
- 右侧面板会实时更新统计数据
- 根据需要调整选项(标点符号、换行等)
- 可随时清空、粘贴或复制文本
计数规则
- 总字符数:包括空格、标点符号和换行在内的所有字符
- 中文字符:统计所有中日韩(CJK)字符
- 英文单词:统计由字母组成的单词
- 段落数:以空行分隔的非空文本块
- 阅读速度:中文 350 字/分钟,英文 225 词/分钟
使用场景
技术原理
词数统计通过 Unicode 空白字符进行分词,对于拉丁文字使用类似 `text.trim().split(/\s+/).filter(Boolean)` 的正则表达式,匹配 ASCII 空格、制表符、换行符以及 Unicode 分隔符如 U+00A0(不间断空格)和 U+2028(行分隔符)。该规则适用于英语、法语、德语等以空格分词的语言,但对中文、日文和泰文等词间没有空格的语言则不再适用。因此 CJK 文本按字符计数:使用 `[...text].length` 而非 `text.length`,因为展开运算符遍历 Unicode 码点,能正确处理 U+FFFF 以上的代理对字符(如从 U+20000 起的 CJK 统一汉字扩展 B 区以及 U+1F300 以上的大多数 emoji)。CJK 字符类别通过 Unicode 属性转义 `/\p{Script=Han}/u` 来检测汉字。 JavaScript 字符串的 `length` 属性计算的是 UTF-16 代码单元数而非字符数,因此 `'👨👩👧'.length === 8`,而可见字形实际上是一个由三个 emoji 通过 U+200D 零宽连接符组成的字形簇。精确计数使用 `Intl.Segmenter('en', { granularity: 'grapheme' })`,自 2023 年起在所有现代浏览器中可用;对于包括 CJK 在内的任意语言的词级分词,`Intl.Segmenter(locale, { granularity: 'word' })` 遵循 Unicode 标准附录 #29,是可用时最准确的方案。句子边界通过 `[.!?…。!?]+` 后跟空白或字符串末尾来检测,段落通过两个或更多连续换行符(`/\n\s*\n/`)来划分。 阅读和朗读时间估算采用已发表的阅读速率常数。Brysbaert(2019)元分析指出,英语非小说类文本的成人默读速度为 238 词/分钟,这就是 225-250 wpm 成为常见 UI 默认值的原因。中文默读平均为 350-500 字/分钟。朗读速度较慢:TED 演讲平均 163 wpm,有声书旁白目标为 150-160 wpm。Twitter 的 280 字符限制通过其 `twitter-text` 库将 CJK 字符和大多数 emoji 按 2 个加权字符计算,而区域指示符对(国旗 emoji)在原始 `.length` 中占 4 个 UTF-16 代码单元。
- 空格分词:`text.trim().split(/\s+/).filter(Boolean)` 适用于拉丁文字;对 CJK 和泰文无效,因为这些语言没有词间空格。
- CJK 字符计数使用 `[...text].length` 正确遍历 Unicode 码点(处理 U+FFFF 以上的代理对,如扩展汉字和 emoji)。
- `string.length` 返回 UTF-16 代码单元数,而非字素簇数:一个 👨👩👧 家庭 emoji 的 `.length === 8` 但只有一个可见字符。
- 最精确的分词方式:`Intl.Segmenter(locale, { granularity: 'word' | 'grapheme' })` 实现了 Unicode 标准附录 #29。
- 阅读速度默认值:英文默读 225-250 wpm(Brysbaert 2019),中文默读 350-500 字/分钟;朗读旁白 150-160 wpm,TED 平均 163 wpm。
- 句子分隔:`[.!?…。!?]+\s+`;段落分隔:`\n\s*\n`;行数统计:`text.split('\n').length`。
- Twitter 通过 `twitter-text` 将 CJK 和大多数 emoji 按 2 个字符计入 280 限制;国旗 emoji(区域指示符对)在原始 UTF-16 中 `.length === 4`。
示例
一句简短英文
输入: Hello world, this is a test.
字符总数: 28
字符(不含空格): 23
单词数: 6
句子数: 1
阅读时长: ~2 秒(225 wpm)中英文混排文案
输入: Hello 你好世界, this is ToolAct.
字符总数: 28
中文字符: 4 (你好世界)
英文单词: 4 (Hello, this, is, ToolAct)
数字: 0Twitter 280 字符限制内的推文
草稿: Launching a new browser-only toolbox today — 112 dev tools,
zero uploads, zero tracking. Check it out at toolact.com.
字符总数:124 (在 Twitter 280 字符限制内)
单词数: 22
行数: 2估算 5 分钟演讲时长
讲稿: ~750 个英文单词
阅读时长: 3 分 20 秒(225 wpm 默读)
演讲时长: 5 分 0 秒 (150 wpm 演讲语速)
段落数: 5 | 句子数:42检查 SEO meta description 长度
Title: "ToolAct - 112 Online Developer Tools, Free and Private"
-> 56 个字符(Google 显示 ~60)
Description: "Format JSON, convert timestamps, generate cron expressions,
and run 100+ more dev tools right in your browser. No uploads."
-> 148 个字符(Google 显示 ~155)常见问题
计数器统计哪些指标?
包括总字符数、不含空格的字符数、中文字符数、英文单词数、数字、行数、段落数、句子数,以及预估的阅读和朗读时长。所有数据在你输入或粘贴时会实时更新。
「单词」是如何定义的?
英文单词以空白字符分隔的字母连续序列为准。中文字符通过 CJK Unicode 区段识别并逐字计数。数字和符号会计入总字符数。
阅读时间是怎么计算的?
默认按每分钟 200~250 词计算,这是成人默读的平均速度。朗读速度较慢(约每分钟 150 词),快速浏览则更快(每分钟 300~400 词)。该数值仅作粗略估算,实际时间取决于内容密度和读者熟悉度。
表情符号和特殊字符会被计数吗?
会,但要注意像 😀 这样的 emoji 在 JavaScript 字符串长度中可能占多个 UTF-16 码元。计数器按文本中实际显示的可见字符进行统计。
为什么行数和段落数不一样?
行以单个换行符分隔(按一次回车),段落以空行分隔(按两次回车)。文字处理软件通常按段落统计,代码编辑器按行统计。本页面同时显示两者,方便你按需选择。
URL 和代码中的字符也会被计入吗?
会,所有非空白字符都计入。如果你只想统计正文(排除 URL、代码块、引用),请在粘贴前手动剔除。部分页面提供「Markdown 感知」模式,可忽略语法字符。
我的文本会被上传吗?
不会。所有计数都在浏览器中完成,粘贴的文本不会上传。