文本统计与分析指南:字数、阅读时间、关键词密度全攻略

文本(更新于 2026年6月2日)

为什么需要文本统计?

场景 需要的指标
SEO 优化 字数、关键词密度、可读性
内容定价 字数、阅读时间
学术论文 字数(中英分别统计)
社交媒体 字符数(限制 280/2000)
翻译报价 字数/词数

中英文字数统计的差异

核心问题:中文没有空格分词

英文:Hello World → 2 个单词(空格分隔)
中文:你好世界 → 4 个字(逐字计算)还是 2 个词(你好/世界)?

三种统计方式

方式 算法 "你好World"的结果 适用场景
字符数 所有字符 7 社交媒体限制
字/词数 中文按字,英文按词 6(4字+2词) 内容定价、SEO
字节数 UTF-8 编码长度 10(4×3+2×1) 存储空间

JavaScript 实现

function countText(text: string) {
  // 移除零宽字符
  const clean = text.replace(/[\u200B-\u200D\uFEFF]/g, '');

  // 字符数
  const charCount = clean.replace(/\s/g, '').length;

  // 中文字数
  const chineseChars = (clean.match(/[\u4e00-\u9fff]/g) || []).length;

  // 英文词数
  const englishWords = (clean.match(/[a-zA-Z]+/g) || []).length;

  // 数字组数
  const numbers = (clean.match(/\d+/g) || []).length;

  // 总字/词数
  const wordCount = chineseChars + englishWords + numbers;

  // 字节数(UTF-8)
  const byteCount = new TextEncoder().encode(clean).length;

  // 行数
  const!lineCount = clean.split(/\n/).filter(l => l.trim()).length;

  // 段落数
  const paragraphCount = clean.split(/\n\s*\n/).filter(p => p.trim()).length;

  return {
    charCount,
    wordCount,
    chineseChars,
    englishWords,
    numbers,
    byteCount,
    lineCount,
    paragraphCount,
  };
}

阅读时间估算

计算公式

中文阅读速度:~500 字/分钟
英文阅读速度:~200-250 词/分钟

阅读时间 = 中文字数 / 500 + 英文词数 / 225

实现

function estimateReadingTime(text: string) {
  const chineseChars = (text.match(/[\u4e00-\u9fff]/g) || []).length;
  const englishWords = (text.match(/[a-zA-Z]+/g) || []).length;

  const minutes = chineseChars / 500 + englishWords / 225;

  if (minutes < 1) return '不到 1 分钟';
  if (minutes < 60) return `约 ${Math.ceil(minutes)} 分钟`;
  const hours = Math.floor(minutes / 60);
  const mins = Math.ceil(minutes % 60);
  return `约 ${hours} 小时 ${mins} 分钟`;
}

不同内容的阅读速度

内容类型 中文速度 英文速度
小说/散文 500-700 字/分 250-300 词/分
技术文档 300-400 字/分 150-200 词/分
法律文件 200-300 字/分 100-150 词/分
社交媒体 600-800 字/分 300+ 词/分

关键词密度分析

什么是关键词密度?

关键词密度 = 关键词出现次数 / 总词数 × 100%

示例:
总词数:500
"前端" 出现 15 次
密度 = 15 / 500 × 100% = 3%

SEO 建议密度

密度 评价
< 1% 过低,搜索引擎可能不重视
1-3% ✅ 最佳范围
3-5% 偏高,注意自然度
> 5% ❌ 关键词堆砌,可能被惩罚

实现

function analyzeKeywordDensity(text: string, keyword: string) {
  const regex = new RegExp(keyword, 'gi');
  const occurrences = (text.match(regex) || []).length;

  const chineseChars = (text.match(/[\u4e00-\u9fff]/g) || []).length;
  const englishWords = (text.match(/[a-zA-Z]+/g) || []).length;
  const totalWords = chineseChars + englishWords;

  const density = (occurrences / totalWords) * 100;

  return {
    keyword,
    occurrences,
    totalWords,
    density: density.toFixed(2) + '%',
    evaluation: density < 1 ? '过低' : density <= 3 ? '最佳' : density <= 5 ? '偏高' : '堆砌',
  };
}

文本可读性评分

Flesch Reading Ease(英文)

分数 = 206.835 - 1.015 × (总词数/总句数) - 84.6 × (总音节数/总词数)

评分对照:
90-100  非常容易(5年级)
60-70   标准(8-9年级)
30-50   较难(大学生)
0-30    非常难(专业学术)

中文可读性

中文没有音节概念,通常用平均句长衡量:

function chineseReadability(text: string) {
  const sentences = text.split(/[。!?;\n]/).filter(s => s.trim());
  const chineseChars = (text.match(/[\u4e00-\u9fff]/g) || []).length;

  const avgSentenceLength = chineseChars / sentences.length;

  if (avgSentenceLength <= 15) return { score: '易读', level: '大众' };
  if (avgSentenceLength <= 25) return { score: '适中', level: '标准' };
  if (avgSentenceLength <= 40) return { score: '较难', level: '专业' };
  return { score: '难读', level: '学术' };
}

使用工具库统计文本

  1. 打开 字数统计工具
  2. 粘贴或输入文本
  3. 自动显示:字符数、字/词数、行数、段落数、阅读时间
  4. 支持中英文混合统计

SEO 文案优化实战

1. 标题长度

// Google 显示约 60 个字符(30 个中文字)
function checkTitle(title: string) {
  const length = title.length;
  return {
    length,
    status: length <= 60 ? '✅' : '❌ 超过 60 字符',
  };
}

2. 描述长度

// Google 显示约 160 个字符(80 个中文字)
function checkDescription(desc: string) {
  const length = desc.length;
  return {
    length,
    status: length <= 160 ? '✅' : '❌ 超过 160 字符',
  };
}

3. 正文长度

页面类型 建议字数
博客文章 1500-3000 字
产品页面 300-800 字
首页 300-500 字
教程 2000+ 字

4. 关键词分布

✅ 好的分布:
  标题含关键词
  第一段含关键词
  正文自然出现 3-5 次
  H2/H3 子标题含变体

❌ 坏的分布:
  每段都重复关键词
  关键词与上下文无关
  用隐藏文本堆砌

常见问题

Word 统计和在线工具统计不一致?

Word 的"字数"统计规则与在线工具可能不同:

  • Word 2019+ 中文按"字"统计
  • 部分工具中文按"字符"统计
  • 建议统一使用一种工具,避免报价争议

如何统计代码中的注释率?

function commentRate(code: string, language: string) {
  const totalLines = code.split('\n').length;
  let commentLines = 0;

  if (language === 'javascript') {
    const singleLineComments = (code.match(/\/\/.*/g) || []).length;
    const multiLineComments = (code.match(/\/\*[\s\S]*?\*\//g) || []).length;
    commentLines = singleLineComments + multiLineComments;
  }

  return (commentLines / totalLines * 100).toFixed(1) + '%';
}

总结

文本统计看似简单,实则暗藏玄机——中英混合统计、阅读时间估算、关键词密度分析各有讲究。掌握这些指标,无论是 SEO 优化、内容定价还是翻译报价,都能做到心中有数。工具库的 字数统计工具 一键获取所有指标,让你专注内容创作。

#文本统计#字数统计#阅读时间#文本分析#教程