如何用下划线替换字母但让空格留在 javascript

How do i replace letters with underscores but let the spaces stay in javascript

我正在尝试用下划线替换我从单词中得到的字母,但如果该单词中有任何空格,我不想替换它。我不知道该怎么做。我正在使用的当前代码是这个 答案数组 = [] 函数 randomWord() {

    for (let i = 0; i < word.length; i++) {
        answerArray[i] = "_"
        answer.innerHTML = answerArray.join(" ")
    }
}

我试着带着我的问题在 Whosebug 中四处寻找,但没有人知道。有人建议这个

word.replace(/\w/gi, '_')

但它无法正常工作。

您可以在此处查看代码 https://codepen.io/NoNameYet04/pen/OJxKYeV 我有测试将“编程语言”中的单词更改为“测试测试”以便您可以测试它

使用如下 if 语句检查它是否是 space:

if (word[i] !== ' '){
   answerArray[i] = '_';
}
else {
    answerArray[i] = ' ';
}

我在下面做了一个简单的例子。对于这样的问题,最好尝试将其分解成小的逻辑步骤。

  • 遍历每个字符

  • 如果是 space 就留下它

  • 如果不是,则替换为 _

    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;
    

    }

调用方式: randomWord("你好");

也许可以通过 split 到数组的字符串和 replace 单词,最后 join 返回来尝试这个。

programming language 的输出将是 ___________ ________

如果要触发每个字符之间的 space,请使用 replace(/\w/g, '_ ') 而不是 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(" "))

function randomWord() {
  for (let i = 0; i < word.length; i++) {
    answerArray[i] = word[i] == " " ? "&nbsp;" : "_"; // <==
    console.log(answerArray[i]);
    answer.innerHTML = answerArray.join(" ")
  }
}

说明:您正在迭代的当前字符是单词中的 space 吗?如果是,我们插入一个 space(在本例中是 HTML space),如果不是,我们只插入一个下划线。

此外,不要忘记更改 category() 函数中变量 remainingLetters 的赋值,这样您就可以忽略 space。

function category(type) {
  /* ... */
  remainingLetters = word.replace(/ /g, "").length;
  /* ... */
}