【发布时间】:2019-03-26 21:56:23
【问题描述】:
我正在为一个 Web 应用程序课程做一个实验作业,并且一直在为一个基本的 HTML 网页实现一个字数计数器。测试和 HTML 的设置已经为我们完成。我只需要编写一个名为 countWords 的函数,它接受一个字符串并返回单词的数量。不过,它的工作方式与您的传统单词计数器不同。一个词被定义为任何 A-Z。其他一切都被认为不是单词的一部分。所以,如果字符串只是"234@#$^",那么字数就是0。所以,我不只是像大多数字计数器一样计算空白。我在 StackOverflow 上找到的所有类似问题的答案都试图只计算空白,不适用于我的情况。因此我提出了一个新问题。
我的想法是使用正则表达式匹配任何 a-z 分组并返回长度的 return 语句。然后,有一个条件来检查空字符串或没有字母 a-z 的字符串。
function countWords(s) {
if(s === "" || s === "%$#^23#") {
return 0
}
return s.match(/[^a-z]/gi).length
}
现在 if 语句只是匹配两个测试用例,这样我就可以通过我的测试。我不确定如何编写另一个匹配正则表达式来检查字符串中是否没有字母或空字符串。任何帮助表示赞赏!卡了一段时间。
【问题讨论】:
-
你只需要
s.match(/[a-z]+/gi).length就够了吗? -
我试过了,但问题是当字符串为
""或"%$#^23#"时,它似乎没有通过我的测试。在这些情况下,它应该返回 0,但事实并非如此。 -
包含变音符号等的单词呢...?您的实验室不认为这些是有效单词/名称的一部分?
-
@RokoC.Buljan 据我了解,教授正在考虑将任何带有 A-Z 字母且未被空格打断的单词作为单词。我猜他不包括变音符号之类的。这只是一个让我们使用正则表达式的基本实验室。它并不意味着是一个正常运行的网站或任何东西。
-
@PatrickConboy 我猜对了,我对这样的教授很生气。他们在 w3schools 水平上教学生,而不是正确地教他们。按上述要求进行正则表达式绝对合法,但应明确将其视为严格属性名称的正则表达式解析器,其中无论如何都禁止特殊字符,而不是“看,这是解析文本内容的方法,words!”...
标签: javascript regex string