英文题库词条单词数量自动统计—考试系统—东方仙盟
自研英语单词 / 短语刷题题库系统,录入词条时需自动区分单个单词、多词短语、短句,用于分类出题、专项训练(如只练双词短语、三词短语)。 录入文本存在脏数据问题:首尾多余空格、单词间多个连续空格、Tab 制表符混杂,不能简单通过空格数量n+1计算单词数,需前端 JS 自动清洗文本并统计真实词数,无需后端参与,单人自测使用更轻量化。
二、原始错误代码问题说明
你当前代码存在正则书写错误,执行后永远返回 1,根源:
// 错误写法:split(/\\s+/) const wordArr = trimStr.split(/\\s+/);正则字面量内不需要双重转义,\\s会匹配反斜杠 + s字面文本,而非空白字符;词条中不存在\s字符串,分割后数组永远只有 1 个元素,统计失效。
修复后标准可用函数
/** * 统计英文词条真实单词数量 * @param {string} text 输入词条文本(单词/短语) * @returns {number} 有效单词个数,空文本返回0 */ function getWordCount(text) { // 1. 清除首尾所有空白:空格、Tab、换行 const trimStr = text.trim(); // 空内容直接返回0 if (!trimStr) return 0; // 2. 正则分割:匹配任意连续空白(空格/Tab/\n),一次性拆分单词 const wordArr = trimStr.split(/\s+/); // 数组长度 = 真实单词总数 return wordArr.length; }三、文本清洗执行流程(贴合你的设计思路)
- 前置去首尾空白:
trim()剔除词条开头、结尾误输入的空格 / Tab,消除首尾空白干扰; - 统一分割连续空白:正则
\s+自动兼容 1 个、多个空格、Tab 混合场景,无需手动替换空格; - 数组长度取值:分割后数组每一项为独立单词,长度即为词数;
- 废弃旧逻辑:不再使用「统计空格数量 + 1」计算,该方式仅适用于标准单空格文本,多空格场景完全失效。
四、多场景测试验证
console.log(getWordCount("abs")); // 1 单个单词 console.log(getWordCount("abs bass")); // 2 双词短语 console.log(getWordCount("abs bass ddd")); // 3 中间多空格三词 console.log(getWordCount(" good\tstudy day ")); // 3 含Tab+首尾空格 console.log(getWordCount("")); // 0 空输入 console.log(getWordCount(" ")); // 0 全空白无效内容五、题库数据库配套设计方案
方案:仅存word_num INT单词数字段(自用最优)
- 字段存储规则
word_num = 1:基础单词,单独单词题库训练word_num > 1:多词短语,统一归类 multiword_num = 3:可单独筛选三词短语专项练习
- 查询筛选逻辑
- 只刷单个单词:
where word_num = 1 - 全部短语训练:
where word_num > 1 - 专项三词短语:
where word_num = 3
拓展预留设计
保留 Tab 空白兼容逻辑,预留sentence短句分类拓展空间,后续录入完整短句无需重构统计函数,正则天然兼容长文本分词。
六、JS 对比 PHP 前端计算优势(单人刷题场景)
- 前端实时计算:录入词条无需提交后端,输入失焦立刻算出词数,页面无刷新;
- 离线可用:本地 HTML 刷题页面脱离服务器也能正常统计;
- 减少接口开销:省去 PHP 接收文本、分词、返回数字的请求流程;
- 逻辑轻量化:仅十几行代码,无复杂后端分词依赖。
七、业务落地使用流程
- 录入页面输入英文词条;
- 输入框失去焦点触发
getWordCount()自动计算词数; - 将返回数字存入数据库
word_num字段; - 出题页面根据
word_num筛选对应类型试题,实现单词 / 短语分类专项训练。
八、核心踩坑总结
- JS 正则字面量
/ /内部空白符号只写\s,禁止\\s双重转义; - 不能依靠原始文本空格数量
n+1计算,必须先清洗空白再分割; - 需做空文本判断,避免空白词条统计出无效数值;
\s自动兼容 Tab、换行、多空格,不用单独处理制表符。
人人皆为创造者,共创方能共成长
每个人都是使用者,也是创造者;是数字世界的消费者,更是价值的生产者与分享者。在智能时代的浪潮里,单打独斗的发展模式早已落幕,唯有开放连接、创意共创、利益共享,才能让个体价值汇聚成生态合力,让技术与创意双向奔赴,实现平台与伙伴的快速成长、共赢致远。
原创永久分成,共赴星辰大海
原创创意共创、永久收益分成,是东方仙盟始终坚守的核心理念。我们坚信,每一份原创智慧都值得被尊重与回馈,以永久分成锚定共创初心,让创意者长期享有价值红利,携手万千伙伴向着科技星辰大海笃定前行,拥抱硅基 生命与数字智能交融的未来,共筑跨越时代的数字文明共同体。
东方仙盟:拥抱知识开源,共筑数字新生态
在全球化与数字化浪潮中,东方仙盟始终秉持开放协作、知识共享的理念,积极拥抱开源技术与开放标准。我们相信,唯有打破技术壁垒、汇聚全球智慧,才能真正推动行业的可持续发展。
开源赋能中小商户:通过将前端异常检测、跨系统数据互联等核心能力开源化,东方仙盟为全球中小商户提供了低成本、高可靠的技术解决方案,让更多商家能够平等享受数字转型的红利。
共建行业标准:我们积极参与国际技术社区,与全球开发者、合作伙伴共同制定开放协议 与技术规范,推动跨境零售、文旅、餐饮等多业态的系统互联互通,构建更加公平、高效的数字生态。
知识普惠,共促发展:通过开源社区 、技术文档与培训体系,东方仙盟致力于将前沿技术转化为可落地的行业实践,赋能全球合作伙伴,共同培育创新人才,推动数字经济 的普惠式增长
阿雪技术观
在科技发展浪潮中,我们不妨积极投身技术共享。不满足于做受益者,更要主动担当贡献者 。无论是分享代码、撰写技术博客,还是参与开源项目 维护改进,每一个微小举动都可能蕴含推动技术进步的巨大能量。东方仙盟是汇聚力量的天地,我们携手在此探索硅基 生命,为科技进步添砖加瓦。
Hey folks, in this wild tech - driven world, why not dive headfirst into the whole tech - sharing scene? Don't just be the one reaping all the benefits; step up and be a contributor too. Whether you're tossing out your code snippets , hammering out some tech blogs, or getting your hands dirty with maintaining and sprucing up open - source projects, every little thing you do might just end up being a massive force that pushes tech forward. And guess what? The Eastern FairyAlliance is this awesome place where we all come together. We're gonna team up and explore the whole silicon - based life thing, and in the process, we'll be fueling the growth of technology
