ToolAct工具行动

字符频率统计

统计文本中每个字符的出现次数和频率分布

输入文本

统计选项

总字符数
0
不同字符数
0

排序

统计选项

频率分布
暂无数据,请输入文本

什么是字符频率统计?

字符频率分析用于统计文本中每个字符出现的次数和占比。它不只看字母,也可能包含数字、标点、空格、中文字符、符号以及不容易被肉眼看到的控制字符。这个工具适合做密码学入门分析、简单替换密码观察、文本特征提取、数据清洗、编码排查、压缩研究和导入内容质量检查。异常频率可能提示隐藏格式字符、乱码、重复分隔符、意外语言或复制粘贴残留。它不会自动解释所有原因,但能把文本的真实字符分布用可量化的方式展示出来,方便继续判断。

使用方法

使用方法

  1. 在输入区域输入或粘贴文本
  2. 系统自动统计每个字符的出现次数与频率
  3. 使用排序选项按字符或次数排列结果
  4. 调整统计选项(区分大小写、空格、换行符)

统计范围

  • 在比较文本之前,先确定是否统计空格、标点符号、大小写和换行符。
  • 对于多语言文本,请注意表情符号、组合字符和 CJK 字符的行为可能与单个拉丁字母不同。

使用场景

分析杂乱日志、OCR 输出和关键词列表的字符分布粘贴复制的日志、OCR 输出、关键词列表或编码字符串,查看总字符数、不同字符数、按频率排序的计数、百分比和可视化条形图。按次数排序以发现主导符号,按字符排序以按字母顺序扫描。这种分布快照是决定清洗、分类还是丢弃输入数据之前的第一步。
暴露不可见的空白字符和大小写问题切换区分大小写、忽略空格和忽略换行符选项,查看重复项、解析失败或布局问题是否由不可见分隔符或字母大小写差异导致。对比区分统计和合并统计的运行结果,可以揭示哪些字符在悄悄地使文本体积翻倍。数千行中的一个不间断空格会在表格中显示为一个微小但真实存在的百分比。
为清洗规则和验证器准备依据在编写替换规则、验证逻辑、语言学习素材、谜题校验或依赖精确字符分布的语料清洗记录之前,按字符或次数排序。频率表为清洗讨论提供了可量化的依据,而非仅靠肉眼检查。与审阅者共享表格,确保规则和它们所针对的数据保持一致。
发现乱码、智能引号和多余的 BOM 标记对可疑字符串运行分析,查找替换字符、组合标记或不可打印字节的异常聚集,这些通常意味着编码错误、智能引号替换或复制文本中残留的 BOM 标记。U+FFFD 的突然激增或短样本中某个字符出现奇怪的频率,通常表示上游存在字符集不匹配。
区分码点、代理对和 ZWJ 表情符号除了原始计数,分析器还展示了码点和字形簇之间的差异:一个旗帜表情如彩虹旗由多个码点通过零宽连接符拼接而成,一个数学符号可能是单个码点或代理对。将总计视为码点总数,这样 ZWJ 序列和代理对在表格中是可见的,而不会折叠到周围的文本中。

技术原理

字符频率分析统计文本中每个字符的出现次数。实现方式使用哈希表(JavaScript 中通常为 Map):1)逐字符遍历文本,2)对每个字符递增映射中的计数,3)按计数降序排列,4)渲染直方图(前10-20个字符,其余归入尾部桶)。算法时间复杂度为 O(N),N 为字符数,主要开销是映射的查找和递增操作(在 V8 和 SpiderMonkey 中对常见情况几乎无额外成本)。 一个有用的细节:什么算一个字符?在 JavaScript 中,.length 返回的是 UTF-16 码元数量,而非 Unicode 码点。基本多文种平面之外的字符(表情符号、罕见 CJK 表意文字)以代理对(两个码元)编码,朴素的逐码元计数会将每个代理半部视为独立字符而多算。本页使用 Array.from(text) 或 Intl.Segmenter 来迭代码点(或字形簇),这对大多数用例来说是正确的字符定义。 一个有用的应用:频率分析是破解替换密码(Caesar、Vigenere、简单替换)的经典技术。英文字母频率分布广为人知(E、T、A、O、I、N、S、H、R 为最常见的字母,大致按此顺序),替换密码会保持频率分布不变,因此最常见的密文字母很可能映射到 E,第二常见的映射到 T,依此类推。本页是教学工具而非密码分析工具,但技术原理是相同的。 关于 Unicode 的注意事项:对于 CJK 语言,字符频率分布取决于语料库(现代小说、古典诗词、技术文本)和分析层级(字符、词、二元组、三元组)。对一部现代中文小说进行频率分析会得到一种分布;对《论语》进行分析会得到另一种分布。本页不绑定特定语料库,用户可以对任何文本运行分析。

  • 哈希表(JS 中的 Map):遍历文本、递增计数、按计数降序排序、渲染直方图;时间复杂度 O(N),单字符开销极低。
  • 代理对:BMP 之外的字符(表情符号、罕见 CJK)是两个 UTF-16 码元;朴素逐码元计数会多算;应使用 Array.from 或 Intl.Segmenter。
  • 替换密码密码分析:英文字母频率 E、T、A、O、I、N、S、H、R(按常见度排序);替换密码保持该分布不变。
  • CJK 频率:取决于语料库(现代小说、古典诗词、技术文本)和分析层级(字符、词、二元组);本页不绑定特定语料库。
  • Top-N 和尾部:默认渲染前10-20个字符,其余归入尾部桶;适合在密集文本中发现规律。
  • 大小写敏感:本页提供大小写敏感/不敏感切换;英文通常不区分大小写(E 和 e 是同一个字母的不同写法),CJK 始终不区分大小写(无大小写概念)。
  • 性能:计数 O(N),排序 K 个不同字符 O(K log K);本页可在远低于一秒的时间内处理百万字符级文本,符合生产环境模式。

示例

英文文本分析

输入 "hello world" → 结果:'l' 出现 3 次(27.3%),'o' 出现 2 次(18.2%)

中文文本分析

输入 "我爱中国我爱北京" → 结果:'我' 和 '爱' 各出现 2 次(25%)

频率分布对比

英文文本:'e' 频率最高,约 12.7%;中文:'的' 频率最高,约 4%

常见问题

这个分析器统计的是什么?

统计每个不同字符及其出现次数,并按频率排序。常用于密码学分析(英文文本的字母频率有明显规律,从高到低依次为 E、T、A、O)、文本特征分析,以及在粘贴的文档中找出意外字符。

空白字符会被统计吗?

默认会——空格、制表符、换行符各占一行。如果只想看可打印字符,可以勾选「忽略空白」。在自然语言文本中,空白通常是出现频率最高的「字符」(约占 20%)。

统计是否区分大小写?

默认区分——A 和 a 是两个不同的字符。开启「忽略大小写」可将它们合并统计,这在自然语言分析中比较常用。但在分析代码或哈希值时,区分大小写很重要。

支持中文、日文、韩文吗?

支持。每个 CJK 字符都会被独立计数。一段中文的频率表自然会出现成百上千个不同字符,因为中文不存在共享的字母表。本工具通过 grapheme-cluster 计数正确处理 Unicode。

可以查看百分比形式的频率吗?

可以,页面通常会同时显示出现次数和占总数的百分比。在破解简单替换密码时,把字母分布与已知的参考分布作对比会非常有用。

为什么百分比加起来不是 100?

这是四舍五入造成的。每一项都按固定的小数位数取整,相加后总和可能与 100% 相差零点几。要得到精确的总数,请直接累加原始计数。

我的文本会被上传吗?

不会。频率分析在你的浏览器中进行,粘贴的文本不会被传输出去。