我为一个学校项目做这件事,但有一件事让我烦恼,项目的一部分要求我改变空白区域或者只是" "数字的空间。这是我的代码:
我知道它凌乱,我只编写了半年
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;
答案 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 ";
}
}
}