统计“BBBBBBBBBBBBBBB出处”中的字母数量,按连续的大写拉丁字母逐个计数,结果是15个字母。其中,B出现15次,字母种类为1种;“出处”是两个汉字,不计入字母数。若统计的是整段字符串的字符长度,则应把这两个汉字一并计入,合计17个字符。
先区分字母数、字符数和字节数
同一段文字可以对应几种不同的统计结果,关键在于统计口径。对“BBBBBBBBBBBBBBB出处”而言,字母数只看拉丁字母,字符数按文字单位计数,字节数则取决于编码方式。把三者混为一谈,容易出现“15个”和“17个”看似矛盾的情况;其实它们回答的是不同问题。
| 统计项目 | 计数范围 | 结果 |
|---|---|---|
| 拉丁字母数 | 只统计连续的大写B | 15个 |
| 不同字母种类 | 统计出现过的字母类型 | 1种,即B |
| 整段字符数 | 15个B加“出处”两个汉字 | 17个 |
| UTF-8字节数 | 每个B按1字节、每个汉字按3字节 | 21字节 |
因此,询问“字母数量”时应答15;询问“这段字符串有多少个字符”时应答17;询问UTF-8编码长度时则是21字节。单位不同,数值也不同。
字母数量的计算公式
可以把待统计文本看作由多个字符组成的序列。逐个检查每个字符,只把A至Z或a至z计入字母数,其他字符记为0。公式可写为:
字母数 = Σ I(字符属于A—Z或a—z)
其中,I表示判断结果:符合条件时取1,不符合时取0。应用到本例,连续的15个B各计1次,“出”和“处”都不属于拉丁字母,各计0次,所以总数为15。
如果还要统计字符总数,可使用另一口径:将字母、汉字、数字及标点都纳入计数。本例没有空格和标点,共有15个B、2个汉字,字符总数为15+2=17。若统计字节数,则需先确定编码;这里按UTF-8计算,15个ASCII字母占15字节,两个常见汉字各占3字节,合计15+6=21字节。
按步骤复算本例
- 确定统计对象:只统计“BBBBBBBBBBBBBBB出处”这一段,不把标题中的其他说明文字带入。
- 逐类拆分:前半段由大写拉丁字母B组成,后半段为汉字“出处”。
- 统计字母:从左到右数连续的B,共15个;没有小写字母或其他拉丁字母。
- 按问题选单位:问字母数,报15个;问字符数,报17个;问UTF-8字节数,报21字节。
这个步骤也适用于大小写混排、字母与汉字混排的文本。只要统计目标是“字母数量”,大小写通常都计作字母;若目标改为“大写字母数量”,就只累计A至Z,不把a至z算入。
容易混淆的统计口径
- 重复次数与字母种类:本例中B重复15次,所以字母数量是15;但出现过的不同字母只有B一种。若统计“有几种字母”,答案应是1种。
- 是否计算汉字:“出处”两个字不增加拉丁字母数,却会让整段字符数从15变为17。回答前应看清题目问的是字母还是字符。
- 空格和标点:空格、逗号、冒号等不属于字母。若统计字符长度,通常会计入它们;若统计字母数,则不计入。
- 大小写处理:区分大小写时,B与b属于两种写法;不区分大小写统计字母种类时,B和b可合并为同一种。字母总次数仍分别计数。
- 统计范围:只统计目标词串,不应把解释文字、标题后半句或示例序号一起算入,否则结果会偏大。
“出处”字段怎样单独计数
“出处”也可以作为来源标注字段处理,但它与字母数量是两类统计任务。若一份记录中每条来源标注算一个条目,条目数按有效记录逐项累计;同一来源重复出现时,按“记录条数”会重复计数,按“不同来源数”则应去重。报告结果时,最好写清采用的是哪一种口径。
回到“BBBBBBBBBBBBBBB出处”这个字符串,最直接的字母统计结论仍是:大写B共15个,字母种类1种。若需同时交代完整文本长度,可补充“含两个汉字,共17个字符”;若关注编码存储长度,则注明UTF-8下为21字节。这样既保留了“出处”字段,也不会把来源条目数、字母数和字符数混成一个数字。














