while循环中的If else语句,其中If else语句决定while循环何时停止

if else statement in while loop, where if else statement determines when while loop stops

本文关键字:while 语句 If else 循环 何时停 决定 其中      更新时间:2023-09-26
var userInput = prompt("type something with or without double spacing");
var errorSpaces = [];
var maxSpaceCount = [];
var doneOnce = 0;
var done = 0;
var size;
var tempArray = [0, 0];
while (done === 0) {
    if (doneOnce === 0) {
        for (var i = 0; i<size; i++) {
            size = userInput.length - 1;
            if (userInput.substr(i, 2) == "  ") {
            userInput.replace(userInput.substring(i, j), userInput[i]);
            errorSpaces.push(0);
            }   
        }
        doneOnce = 1;
        maxSpaceCount.push(0);
    } else if (doneOnce === 1 && tempArray.length != 1) {
        for (var i = 0; i<size; i++) {
            tempArray = [0];
            size = userInput.length - 1;
            if (userInput.substr(i, 2) == "  ") {
                userInput.replace(userInput.substring(i, j), userInput[i]);
                tempArray.push(0);
            }
            doneOnce = 2;
        }
        maxSpaceCount.push(0);
    } else {
    done = 1;
    }
}
alert("done");

在第二个for循环时循环,而不是结束。我知道这可能不是最好的方法,但是我怎样才能使"else if"工作,这样当没有更多的双空格时,它就会转到最后的else?

我试图通过迭代地用单个空格替换双引号来消除任何多个空格,然后重新读取以替换进一步的双引号(以前是三重),等等

如果你的目标是用一个空格代替任何双引号(或多个空格),那就太多代码了

尝试正则表达式

var userInput = prompt("type something with or without double spacing");
userInput  = userInput.replace(/'s{2,}/g, ' ');
alert("done");

虽然不太确定你想用tempArray做什么,因为它似乎没有意义。


编辑

似乎有一些迹象表明,需要计算出现2个或更多空格的次数,因此使用下面的命令将为您提供计数。||位的原因是因为如果没有找到,它将返回null, || []将把null更改为空数组,因此它的长度将为零。感谢@RobG

var countOfMultipleSpaces = (userInput.match(/'s{2,}/g) || []).length;

我相信这是不言而喻的,你必须这样做之前,你替换所有

这是你想要的吗?

"type     something  with or   without    double spacing".replace(/'s{2,}/g, ' ');
//"type something with or without double spacing"