i am trying to replace the letters i get from the word with underscores but if there is any spaces in that word i do not want to replace it. im not sure how to do it. the current code i am using is this answerArray = [] function randomWord() {
for (let i = 0; i < word.length; i++) {
answerArray[i] = "_"
answer.innerHTML = answerArray.join(" ")
}
}
i've tried to look around in stackoverflow with my question but no one has it. someones suggested this
word.replace(/\w/gi, '_')
but it isnt working as i want.
You can check out the code here https://codepen.io/NoNameYet04/pen/OJxKYeV i have for the test change the word in "programming language" to "test test" so you can test it out
Check if it's a space using an if statement like this:
if (word[i] !== ' '){
answerArray[i] = '_';
}
else {
answerArray[i] = ' ';
}
I did a quick example below. With problems like this it's always better to try to break it down into small logical steps.
Go through each character
If it's a space then leave it
If it's not then replace with an _
function randomWord(word) {
let ret = ""; // return string
for (let i = 0; i < word.length; i++) { // go through each character
if(word[i] !== " "){ // if it's not a space then replace it
ret += "_";
} else if (word[i] === " "){ // if it's a space then we add to the return string
ret += " ";
}
}
return ret; //return or answer.innerHTML = ret;
}
Call using: randomWord("hello there");
Maybe try this one by split the string to array and replace the word and finally join back.
The output for programming language will be ___________ ________
If you want to trigger the space between each character, use replace(/\w/g, '_ ') instead of replace(/\w/g, '_')
let word = 'programming language'
let answerArray = []
let newword = word.split(' ').forEach(i => {
answerArray.push(i.replace(/\w/g, '_ '))
})
// answer.innerHTML = answerArray.join(" ")
console.log(answerArray.join(" "))