如何用下划线替换字母但让空格留在 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] == " " ? " " : "_"; // <==
console.log(answerArray[i]);
answer.innerHTML = answerArray.join(" ")
}
}
说明:您正在迭代的当前字符是单词中的 space 吗?如果是,我们插入一个 space(在本例中是 HTML space),如果不是,我们只插入一个下划线。
此外,不要忘记更改 category()
函数中变量 remainingLetters 的赋值,这样您就可以忽略 space。
function category(type) {
/* ... */
remainingLetters = word.replace(/ /g, "").length;
/* ... */
}
我正在尝试用下划线替换我从单词中得到的字母,但如果该单词中有任何空格,我不想替换它。我不知道该怎么做。我正在使用的当前代码是这个 答案数组 = [] 函数 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] == " " ? " " : "_"; // <==
console.log(answerArray[i]);
answer.innerHTML = answerArray.join(" ")
}
}
说明:您正在迭代的当前字符是单词中的 space 吗?如果是,我们插入一个 space(在本例中是 HTML space),如果不是,我们只插入一个下划线。
此外,不要忘记更改 category()
函数中变量 remainingLetters 的赋值,这样您就可以忽略 space。
function category(type) {
/* ... */
remainingLetters = word.replace(/ /g, "").length;
/* ... */
}