You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js不区分大小写忽略首尾空格的单词统计实现问题

代码调整方案

原有代码存在的问题

  • 未对每个单词做首尾空格去除,导致带前后空格的单词会被识别为不同的统计项
  • 未统一单词大小写,大小写不同的相同单词会被分开统计
  • Windows系统下文件路径的反斜杠未做转义,会触发路径识别错误,导致读取文件失败
  • 函数末尾存在两个连续return语句,第二个return wordMap永远不会被执行,属于无效代码
  • 直接按单个空格分割文本,若文本存在连续空格、换行符、制表符等空白分隔符,会分割出空字符串,产生无效统计项

调整后的完整代码

const { readFileSync } = require('fs');

// 路径反斜杠需要转义,也可以替换为正斜杠C:/Users/eeroj/source/repos/Nodejs/pish/pish
let file = 'C:\\Users\\eeroj\\source\\repos\\Nodejs\\pish\\pish';

function countRepeatedWords(sentence) {
    // 用正则匹配任意长度的空白字符分割,避免连续空格产生空元素
    let words = sentence.split(/\s+/);
    let wordMap = {};

    for (let i = 0; i < words.length; i++) {
        // 去除首尾空格+统一转小写
        let currentWord = words[i].trim().toLowerCase();
        // 跳过空字符串
        if (!currentWord) continue;
        wordMap[currentWord] = (wordMap[currentWord] || 0) + 1;
    }

    const sortedEntries = Object.entries(wordMap).sort(([a,], [b,]) => a.localeCompare(b));
    const sortedWordMap = Object.fromEntries(sortedEntries);

    return sortedWordMap;
}

const words = readFileSync(file).toString();
console.log(countRepeatedWords(words));

效果验证

对于示例中的"themselves"、"Themselves"、" THEMSelveS "三个输入,处理后都会统一转为themselves作为统计key,最终会输出themselves: 3,符合需求。

内容的提问来源于stack exchange,提问作者Eero Jyrgenson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 08:09:03