我需要知道为什么这是错误的...我正在尝试创建一个函数,该函数查找其中包含最多单词的句子并返回单词数。它寻找点。问号 ?和感叹号!
const numberOfWords = (string) => {
let sentenceArray = string.match(/.*?[?!.]/g)
let mostWords =
sentenceArray.reduce((sentence1, sentence2) =>
(sentence1.split('').length < sentence2.split ('').length ?
sentence1 = sentence2
:
sentence1
))
return mostWords.split(' ').length
}
这已与该字符串一起用作测试:“这是一个句子。这是另一个?我想吗?”
返回4,但在某些情况下,它会增加一个数字吗?我想了解原因!像这样:“这个呢?等等!我想这应该是最长的。我想这个应该是最长的甚至更长。”
//返回最后一个句子为11个单词,但应为10。
最佳答案
在分割并取长度之前,您应该trim()
字符串:
const numberOfWords = (string) => {
let sentenceArray = string.match(/.*?[?!.]/g)
let mostWords =
sentenceArray.reduce((sentence1, sentence2) =>
(sentence1.trim().split('').length < sentence2.trim().split('').length ?
sentence1 = sentence2
:
sentence1
))
return mostWords.trim().split(' ').length
}
console.log(numberOfWords(`How about this one?Wait! I think this should be the longest. I think this one should be the longest even longer.`))