fluid-dev / hexo-theme-fluid

:ocean: 一款 Material Design 风格的 Hexo 主题 / An elegant Material-Design theme for Hexo
https://hexo.fluid-dev.com/
GNU General Public License v3.0
7.39k stars 1.13k forks source link

修复英文文章字数统计问题 #1128

Open Shengw3n opened 2 months ago

Shengw3n commented 2 months ago

问题描述:在最新版本(1.9.8)中,英文文章的字数统计仍然不准确。例如,我的一篇全英文博客的字数应该是大约 2.8k 字,但实际显示只有 760 字。

示例

修复前修复前

代码

const getWordCount = (post) => {
  const content = stripHTML(post.origin || post.content).replace(/\r?\n|\r/g, ' ').trim();

  if (!post.wordcount) {
    // 更准确地匹配单词和字符
    const zhCount = (content.match(/[\u4E00-\u9FA5]/g) || []).length;
    const enCount = (content.match(/[a-zA-Z0-9]+/g) || []).length;
    post.wordcount = zhCount + enCount;
  }
  return post.wordcount;
};

修复后修复后

描述

更新后的 getWordCount 函数提高了对中文和英文文本字数统计的准确性。此更改解决了 1.9.8 版本中存在的统计不足的问题。

zkqiang commented 2 months ago

这样改是不对的,Fluid 并不只支持中文和英文,代码中正则是匹配除中文外的字符(如拉丁 日韩),英文统计不准应该是正则有问题,我有空再看看。

或者你可以尝试改为:

const getWordCount = (post) => {
  if (!post.wordcount) {
    // post.origin is the original post content of hexo-blog-encrypt
    const content = stripHTML(post.origin || post.content).replace(/\r?\n|\r/g, '').replace(/\s+/g, '');
    post.wordcount = content.length;
  }
  return post.wordcount;
};

看是否符合预期