javascript - javascript中的单词计数器
问题描述
我正在为一个 Web 应用程序课程做一个实验室作业,并且一直在为一个基本的 HTML 网页实现一个单词计数器。测试和 HTML 的设置已经为我们完成。我只需要编写一个名为 countWords 的函数,它接受一个字符串并返回单词的数量。不过,它的工作方式与您的传统单词计数器不同。一个词被定义为任何 AZ。其他一切都被认为不是单词的一部分。所以,如果字符串只是"234@#$^"
那么字数为 0。所以,我不只是像大多数字计数器一样计算空格。我在 StackOverflow 上找到的所有类似问题的答案都试图只计算空白,不适用于我的情况。因此,我提出了一个新问题。
我的想法是有一个返回语句,它使用正则表达式匹配任何 az 分组并返回长度。然后,有一个条件来检查空字符串或没有字母 az 的字符串。
function countWords(s) {
if(s === "" || s === "%$#^23#") {
return 0
}
return s.match(/[^a-z]/gi).length
}
现在 if 语句只是匹配两个测试用例,这样我就可以通过我的测试。我不确定如何编写另一个匹配正则表达式来检查字符串中是否没有字母或空字符串。任何帮助表示赞赏!卡了一段时间。
解决方案
const str1 = '%$#^23#';
const str2 = 'String with ___ special characters and @$&# white spaces !!!';
const str3 = 'Special &$%# characters --> and %$#^5# connected,words but our <++@@||++> function,still_works!';
const wordCount = (str) => str.replace(/[\W_\d]/g,' ').split(' ').filter(Boolean).length;
console.log(wordCount(str1)); // 0
console.log(wordCount(str2)); // 7
console.log(wordCount(str3)); // 11
使用“正则表达式”将所有特殊字符、下划线、数字和多余的空格替换为空格
--> 替换(/[\W_\d]/g,' ')
将字符串转换为数组
--> .split(' ')
使用过滤器删除数组中的所有空字符串
--> .filter(布尔值)
然后,用“长度”获取字数
--> .长度
推荐阅读
- python - 如何统计UCREL语义分析系统(USAS)加载的语义标签的出现次数
- mysql - DELETE TOP 语句的正确语法是什么?
- python - discord.py wait_for('reaction_add') 无法正常工作
- java - Getting Null value after bind method called in Reference object of OSGI
- javascript - 集合之间可以发生 NoSQL 注入吗?
- ios - 如果堆栈大小> 1,则弹出后 SwiftUI3 导航链接不起作用
- php - GET 小写字母和大写字母 PhP
- mysql - MySQL 查询将自身限制在某些日期 - 为什么?
- python - Plotly:如何创建一个下拉按钮,对折线图中的线进行分组?
- magento - 如何在magento 2中加载管理网格时在条件下应用过滤器