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
相关产品推荐
相关产品推荐

