while循环中的if语句,其中if else语句确定while循环何时停止

时间:2014-05-13 23:18:04

标签: javascript if-statement while-loop

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");

这循环在第二个循环而不是完成。我知道这可能不是最好的方法,但是如果&#39;那么我怎么能做到呢?工作,以便当没有更多的双重空格时,它将进入最后的其他地方?

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

2 个答案:

答案 0 :(得分:3)

方式,如果您的目标是用单个空格替换任何双(或更多空格),那么代码太多了

尝试正则表达式

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;

我确定不用说在更换所有内容之前必须这样做

答案 1 :(得分:2)

这是你想要的吗?

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