本文详解如何避免因末尾逗号或空格导致的关键词误计数,通过 `split()` 配合 `filter()` 清洗空字符串,实现真正语义化的关键词计数。
在 Web 表单中,用户常以英文逗号(,)分隔多个关键词(如 "JavaScript, HTML, CSS"),开发者自然想到用 String.prototype.split(",") 获取关键词数组并取 .length。但该方法仅按字符切分,不关心语义——例如 "word1, word2," 会被拆为 ["word1", " word2", ""],长度为 3,而实际有效关键词只有 2 个(末尾空字符串应被忽略)。
正确做法是:先分割,再过滤掉空白项(包括纯空字符串、仅空格/制表符等)。推荐使用 filter() 配合 trim() 确保健壮性:
function countKeywords(inputToCheckId) {
const content = $('#' + inputToCheckId).val() || '';
return content
.split(',')
.map(str => str.trim()) // 去除每个片段首尾空格(处理 "a, b , c")
.filter(str => str !== '') // 过滤掉空字符串
.length;
}✅ 示例验证:
⚠️ 注意事项:
立即学习“Java免费学习笔记(深入)”;
简化。总结:关键词计数不是字符串切分问题,而是数据清洗 + 语义提取过程。始终以用户输入的真实意图为准——空、全空格、仅分隔符,都不应计入有效关键词。