MiServe DevTools

我的贴纸

把工具固定在这里,会保存在此浏览器中。

字数与字符数统计

统计文本的字符数、词数、句数、段落数、行数和字节数,并给出阅读时间和最常用的词。

字符数
0
字符数(不含空格)
0
词数
0
不同词数
0
句数
0
段落数
0
行数
0
UTF-8 字节数
0
UTF-16 字节数
0

最常用的词
#词次数占总词数的比例

还没有可统计的词。

在浏览器中运行。粘贴的内容不会被上传。

关于此工具

什么算一个字符

字符数统计的是字素簇(grapheme cluster)的数量:按照 Unicode 文本分段规则,读者看作一个字符的单位。由字母 e 加组合重音符号输入的“é”只算一个字符。由多个码点组成的 emoji 也是如此:家庭 emoji 👨‍👩‍👧‍👦 算一个字符,尽管它包含 7 个码点、11 个 UTF-16 码元,在 UTF-8 中占 25 个字节。

因此这个数字可能与 JavaScript 中的 string.length 不同,后者统计的是 UTF-16 码元;也可能与数据库报告的长度不同,后者视函数和列类型而定,可能以字节或码点为单位。当表单或 API 规定了长度上限时,请确认它指的是哪种单位。“字符数(不含空格)”不计空格、制表符、换行符及其他空白字符。

如何划分词、句子和段落

字符、词和句子由浏览器的 Intl.Segmenter 划分,它按页面语言创建。它遵循 Unicode 的词边界和句子边界规则;对于日语、中文和泰语这类词与词之间不加空格的语言,它依赖浏览器内置的语言数据,通常是一部词典。像 3.14 这样的数字算一个词,“don't”也算一个词,而像“well-known”这样带连字符的复合词算两个词。

句子边界需要判断:带句点的缩写可能被当作句子结尾,而换行总会结束一个句子,所以标题也算一句。请把这个数字当作估计值。段落指包含文本的一行,这与从文字处理软件粘贴过来的文本相符。行数包括所有行,空行也算在内。词频表列出最常用的十个词。比较时不区分大小写,也不会过滤“the”这样的常用词。

字节数与阅读时间

UTF-8 对 ASCII 字符使用一个字节,对大多数带重音的拉丁字母以及希腊字母和西里尔字母使用两个字节,对大多数中文、日文和韩文字符使用三个字节,对大多数 emoji 使用四个字节。UTF-16 对大多数字符使用两个字节,对基本多文种平面之外的字符使用四个字节,其中包括大多数 emoji。字节数只计算文本本身,不含字节顺序标记。浏览器的文本框会把每个换行都保存为单个换行符(LF),所以从使用 Windows 换行符(CR LF)的文件中复制的文本,每个换行只计为一个字符,算出的字节数也会小于该文件的大小。

阅读时间等于词数除以阅读速度。默认的每分钟 200 词是默读速度常用的整数值;Marc Brysbaert 在 2019 年对阅读速度研究所做的综述中,得出成年人阅读英文的平均速度为:非虚构类每分钟 238 词,虚构类每分钟 260 词。请根据你的读者调整速度;如果文本要朗读,请调低速度,因为朗读比默读慢。

常见问题

空格算字符吗?

算。在“字符数”中,每个空格、制表符和换行符都算一个字符。标为“字符数(不含空格)”的数字则不计任何空白字符。

为什么其他工具统计的词数不一样?

各种字数统计工具在细节上有差异:带连字符的词算一个还是两个,数字和电子邮件地址算不算词,以及如何处理词与词之间不加空格的语言。此工具使用 Unicode 定义的词边界,由你的浏览器实现。

中文和日文文本如何统计?

由于这些语言的词与词之间不加空格,浏览器会借助内置的语言数据(通常是一部词典)把它们切分成词。结果只是估计值,而且不同浏览器对同一个句子的切分可能不同,所以对于这些语言,字符数是更可靠的衡量标准。

我的文本会被保存或发送到任何地方吗?

不会。所有统计都由浏览器标签页中的 JavaScript 完成。文本不会被保存,此工具也不会用它发出任何网络请求。只有你选择的阅读速度会保存在此浏览器中。

文本分类的其他工具