JavaScript字符统计求助:重复字母、非空白及全字符计数失败
文本统计功能修正方案
先看修正后的完整代码,直接替换你原有的代码即可实现三个需求:
<body> <p> <textarea id="textBubble" style="height: 500px;"></textarea> </p> <p> <span id="totalCharCount">0</span> 总字符数(含空白) </p> <p> <span id="nonWhiteCharCount">0</span> 非空白字符数 </p> <p> <span id="duplicateCharCount">0</span> 重复字母数量 </p> <button type="button" onclick="calculateStats()">统计!</button> <script> const textBubble = document.getElementById("textBubble"); const totalCharCount = document.getElementById("totalCharCount"); const nonWhiteCharCount = document.getElementById("nonWhiteCharCount"); const duplicateCharCount = document.getElementById("duplicateCharCount"); // 实时统计(可选,也可以只通过按钮触发) textBubble.addEventListener("keyup", calculateStats); function calculateStats() { const text = textBubble.value; // 1. 统计包含空白的所有字符数量 totalCharCount.innerText = text.length; // 2. 统计非空白字符数量(过滤所有空白字符:空格、制表符、换行等) const nonWhiteChars = text.split('').filter(char => !/\s/.test(char)); nonWhiteCharCount.innerText = nonWhiteChars.length; // 3. 统计重复字母数量(不区分大小写,只统计出现≥2次的字母) duplicateCharCount.innerText = getDuplicateCount(text); } function getDuplicateCount(text) { const charMap = {}; // 统一转小写,不区分大小写统计 const lowerText = text.toLowerCase(); // 遍历每个字符,记录出现次数 for (const char of lowerText) { // 只统计字母,忽略数字、符号、空白 if (/[a-z]/.test(char)) { charMap[char] = (charMap[char] || 0) + 1; } } // 统计出现次数≥2的字母数量 let count = 0; for (const char in charMap) { if (charMap[char] > 1) { count++; } } return count; } </script> </body>
关键修正点说明
- 元素选择错误:你原代码里
var nonWhite = document.getElementById("textBubble")选错了元素,应该对应显示统计结果的span,现在重新命名了ID,让功能对应更清晰。 - 全字符计数:直接用
text.length就能拿到总字符数(包括空格、换行等),不用拆分字符串,简单高效。 - 非空白字符计数:原代码里
characters变量未定义,现在用text.split('')拆分所有字符,再用正则/\s/过滤掉所有空白类字符(包括空格、制表符、换行)。 - 重复字母统计:原函数存在多个错误:
- 未初始化
count变量,会导致报错; i = i.toLowerCase()里的i未定义;- 只给字符赋值1,没有累加出现次数;
- 现在修正为:先把文本转小写,只统计字母,用对象记录每个字母的出现次数,最后统计出现次数≥2的字母数量。
- 未初始化
使用说明
- 可以实时输入时自动统计(keyup事件),也可以点击按钮触发统计;
- 重复字母统计忽略大小写(比如A和a算同一个),且只统计字母,不会把数字、符号、空白算进去;
- 非空白字符统计会过滤所有空白类字符,不止空格。
内容的提问来源于stack exchange,提问作者Gabriel Flores
相关产品推荐
相关产品推荐

