Question

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

This loops at the second for loop rather than finishing. I know it probably isn't the best way to do it, but how could I make the 'else if' work so that when there are no more double spaces, it will go to the final else?

I am trying to eliminate any multiple spaces by iteratively replacing double spaces with single spaces, then re-reading to replace further double (previously triple) spaces, etc.

Was it helpful?

Solution

Way , way too much code if your goal is to replace any double (or more spaces) with a single space

try regex

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

although not quite sure what you are trying to do with tempArray as it doesn't seem to make sense.


EDIT

There appears to be some indication that there is a requirement to count how many occurrences of 2 or more spaces, so using the below will give you the count. The reason for the || bit is because if none are found, it will return null, || [] will change the null to empty array, so the length of it will be zero. Thanks to @RobG

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

I'm sure it goes without saying that you have to do this before you replace them all

OTHER TIPS

Is this what you want?

"type     something  with or   without    double spacing".replace(/\s{2,}/g, ' ');
//"type something with or without double spacing"
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top