我需要知道为什么这是错误的...我正在尝试创建一个函数,该函数查找其中包含最多单词的句子并返回单词数。它寻找点。问号 ?和感叹号!

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.`))

10-08 02:18