使用Javascript函数计算字符串中的空格

时间:2017-07-20 06:55:01

标签: javascript function

我正在写一本书,它要求创建一个函数来查找字符串中的空格。不确定我做错了什么,但这是我的代码。

function calSpaces(str) {
  var spaces = 0;

  for(var i = 0; i < str.length; i++) {
    if (str[i] === ' ') {
       spaces ++;
  }
  return spaces - 1;
}

console.log(calSpaces("This is a test of spaces."));

9 个答案:

答案 0 :(得分:1)

你可以这样做一个技巧:

var st = "Good morning people out there."
var result = st.split(' ');
var space_count = result.length-1;
console.log( space_count );

答案 1 :(得分:1)

你的逻辑是有效的,但是如果条件允许,你就会错过一个大括号。

function calSpaces(stringline)
{
  var spaces = 0;

  for(var i = 0; i < stringline.length; i++) 
  {
    if (stringline[i] === ' ') {
       spaces ++;
    }
  }
  return spaces - 1;
}

只需添加结束花括号并解决问题。

此外,返回空间为total count - 1。故意这样做了吗?如果没有,请从计数中删除- 1

以下是JSBIN link

快乐的编码。

答案 2 :(得分:1)

一个非常简单的解决方案是使用匹配空格(和/或所有空格)的正则表达式:

function countSpaces(str) {
  return (str.match(/\s/g) || []).length;
}

function showCount() {
  var str = document.getElementById('string').value;
  document.getElementById('count').innerHTML = countSpaces(str);
}
<input type="text" id="string">
<button onclick="showCount()">Count Spaces</button>
<span id="count"></span>

答案 3 :(得分:0)

以下是如何做到这一点:

 var my_string = "This is a test of spaces.";
 var spaceCount = (my_string.split(" ").length - 1);
 console.log(spaceCount)

答案 4 :(得分:0)

检查你的牙套,一个缺少

function calSpaces(str) {
  var spaces = 0;

  for(var i = 0; i < str.length; i++) {
    if (str[i] === ' ') {
       spaces ++;
  }//end of IF
  return spaces - 1;
}//end of FOR
//??? end of FUNCTION ???
console.log(calSpaces("This is a test of spaces."));

您在return循环中使用了for

您只需要返回spaces而不是spaces - 1

function calSpaces(str) {
  var spaces = 0;

  for (var i = 0; i < str.length; i++) {
    if (str[i] === ' ') {
      spaces++;
    }
  }
  return spaces;//Outside of loop
}


console.log(calSpaces("This is a test of spaces."));

答案 5 :(得分:0)

一个更简单的解决方案是使用正则表达式从字符串中仅提取空格并计算它们:

function calSpaces(str) {
  return str.replace(/[^\s]/g, '').length;
}

console.log(calSpaces("This is a test of spaces."));

答案 6 :(得分:0)

可能最简单和最简短的解决方案是使用split()并获取数组的长度:

&#13;
&#13;
var string = "This statement has lot of spaces and this spaces are never ending.";
var count = (string.split(' ').length - 1);
console.log(count)
&#13;
&#13;
&#13;

答案 7 :(得分:0)

其他答案指出,还有其他方法可以做到这一点,但要回答你关于确切问题的问题:你的括号错了。试试这个代码片段吧,现在可以了:

function calSpaces(str) {
      var spaces = 0;
    
      for(var i = 0; i < str.length; i++) {
        if (str[i] === ' ') {
           spaces++;
      	}
      }

      return spaces - 1;
    }

    console.log(calSpaces("This is a test of spaces."));

答案 8 :(得分:-2)

我建议使用正则表达式更简单/更快速的方法:

&#13;
&#13;
function calSpaces(str) {
    count = (str.match(/\s/g) || []).length;
    return count;
}

console.log(calSpaces('This is an example string'));
&#13;
&#13;
&#13;