计算字符串中的单词

新手上路,请多包涵

我试图以这种方式计算文本中的单词:

function WordCount(str) {
  var totalSoFar = 0;
  for (var i = 0; i < WordCount.length; i++)
    if (str(i) === " ") { // if a space is found in str
      totalSoFar = +1; // add 1 to total so far
  }
  totalsoFar += 1; // add 1 to totalsoFar to account for extra space since 1 space = 2 words
}

console.log(WordCount("Random String"));

我认为我已经很好地理解了这一点,只是我认为 if 语句是错误的。检查 str(i) 是否包含空格并加 1 的部分。

编辑:

我发现(感谢 Blender)我可以用更少的代码做到这一点:

function WordCount(str) {
  return str.split(" ").length;
}

console.log(WordCount("hello world"));

原文由 user2755667 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 415
2 个回答

使用方括号,而不是括号:

 str[i] === " "

charAt

 str.charAt(i) === " "

你也可以用 .split() 来做:

 return str.split(' ').length;

原文由 Blender 发布,翻译遵循 CC BY-SA 3.0 许可协议

在重新发明轮子之前尝试这些

from 使用 JavaScript 计算字符串中的单词数

function countWords(str) {
  return str.trim().split(/\s+/).length;
}

来自 http://www.mediacollege.com/internet/javascript/text/count-words.html

 function countWords(s){
    s = s.replace(/(^\s*)|(\s*$)/gi,"");//exclude  start and end white-space
    s = s.replace(/[ ]{2,}/gi," ");//2 or more space to 1
    s = s.replace(/\n /,"\n"); // exclude newline with a start spacing
    return s.split(' ').filter(function(str){return str!="";}).length;
    //return s.split(' ').filter(String).length; - this can also be used
}

使用 JavaScript 计算字符串中的单词数,而不使用正则表达式- 这将是最好的方法

function WordCount(str) {
     return str.split(' ')
            .filter(function(n) { return n != '' })
            .length;
}

作者注释:

您可以调整此脚本以按照您喜欢的任何方式计算单词数。重要的部分是 s.split(' ').length — 这计算了空格。该脚本会在计数之前尝试删除所有多余的空格(双空格等)。如果文本包含两个单词且它们之间没有空格,它将把它们算作一个单词,例如“第一句。下一句的开头”。

原文由 internals-in 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏