如何查找字符串中是否有空格......很棘手

时间:2016-05-24 04:08:49

标签: javascript html

我为一个学校项目做这件事,但有一件事让我烦恼,项目的一部分要求我改变空白区域或者只是" "数字的空间。这是我的代码:

我知道它凌乱,我只编写了半年

  • exclsp是"排除空格"
  • inclsp是"包含空格"
  • dispwos是"显示没有空格"
  • dispwsp是"显示空格"

    
    
    var txt;
    var num;
    var spce = 0;
    
    function cnt()
    {
        txt = document.getElementById('disp').value;
        num = txt.length;
    
        // includes spaces into the returned number
        if (document.getElementById("inclsp").checked == true)
        {
            document.getElementById("dispwsp").innerHTML = num + " characters.";
        }
    
        // excludes spaces from the returned number
        if (document.getElementById("exclsp").checked === true)
        {
            for (var i = 0; i < num; i++) {
                if (txt.includes(" "))
                {
                    // alert("THERES A SPACE HERE");
                    spce++;
                }
                else
                {
                    num = num;
                }
            } 
        }
    
        document.getElementById("dispwos").innerHTML = num - spce + " characters.";
    }
    &#13;
    <!doctype html>
    
    <html>
    <head>
        <meta charset="utf-8">
    	<script src="LetterCount.js"></script>
    	<link rel="stylesheet" type="text/css" href="LetterCount.css"/>
    	<title>Letter Counter</title>
    </head>
    
    <body>
        <textarea rows="4" cols="50" placeholder="Input your text here!" id="disp"></textarea><br>
    
        <form name="form1">
    	<input type="radio"  name="button" id="inclsp"> Include spaces</input><br>
        <input type="radio"  name="button" id="exclsp"> Exclude spaces</input><br>
        </form>
    
        <button onclick="cnt()">Click Me!</button><br><br>
    
        <div id="dispwsp"></div>
        <div id="dispwos"></div>
    </body>
    </html>
    &#13;
    &#13;
    &#13;

6 个答案:

答案 0 :(得分:0)

我认为您需要更改此行:

 if (txt.includes(" "))

 if (txt[i] == " ")

这样你实际上每次检查每个字符而不是试图检查整个字符串。 您还可以使用正则表达式并在一行简单的代码中完成,并完全消除循环:

spce = txt.match(/\s/g).length

答案 1 :(得分:0)

我不了解dispwsp dispwos的目的所以我只是删除了它们。你只想要显示1个结果,所以为什么把它放在不同的地方只需为你的结果制作一个div,比如

seenMap.set(node, true)

你的JS可以简化很多,你不需要遍历这些字母。这是小提琴:https://jsfiddle.net/zwzqmd27/

 <div id="result"></div>

答案 2 :(得分:0)

Check if a string has white space

可能重复

但你可以试试这个。

function hasWhiteSpace(s) {
  return s.indexOf(' ') >= 0;
}

答案 3 :(得分:0)

如果您想将字符串中的空格更改为数字..

这可能对你有帮助......

str.replace(/\s/g,"9");//any number(that You want)

这段代码基本上用数字替换空格。

答案 4 :(得分:0)

正如@Micheal所说,您可以使用 indexOf() 方法检查文本内容中是否存在特定字符。

您只需要传递字符或子字符串(字符集)以检查它是否存在。

Example : 
var myText = "Sample text";
var substringIndex = myText.indexof(" "); //substringIndex = 6
substringIndex = mytext.indexof("ex");//substringIndex  = 8;
substringIndex  = mytext.indexof("tt"); // substringIndex  =-1;

如果子字符串不匹配,它将返回 -1 作为索引。 通过使用索引,您可以说,如果索引值大于-1,则表示特定字符​​(子字符串)。

注意:如果你传递一组字符,如果整个字符匹配,它将只返回第一个字符的起始索引。

在你的情况下,就像

 ...........
   ...........
     if (txt.indexOf(" ")>-1)
        {
            // alert("THERES A SPACE HERE");
            spce++;
        }
        else
        {
            num = num;
        }
      ...............
   ...............

答案 5 :(得分:0)

只需用下面的代码替换脚本.. 我是为你做的......

var txt;
var num;
var spce = 0;

function cnt()
{
//to clear "dispwsp" and "dispwos" before action in cnt() function
document.getElementById("dispwsp").innerHTML = "";
document.getElementById("dispwos").innerHTML = "";

txt = document.getElementById('disp').value;
num = txt.length;

// includes spaces into the returned number
if (document.getElementById("inclsp").checked == true)
{
    document.getElementById("dispwsp").innerHTML = num + " characters.";
}


// excludes spaces from the returned number
if (document.getElementById("exclsp").checked == true)
{
    num = 0;
    spce = 0;
    for (var i = 0; i < txt.length; i++) {
        var temp = txt.substring(i, (i+1)); 
            if(temp==" ")
            {
              spce++;
            }else
            {
              num++;
            }
            document.getElementById("dispwos").innerHTML = num  + " characters and "+ spce +" spces ";
        } 
    }   
}