javascript - 如何只显示一个隐藏的字母(js)
问题描述
我正在尝试编写《上吊人》的游戏,
为此,我隐藏了所选单词的字母,但是一旦用户选择了一个字母,我就会尝试只显示正确的字母而不显示单词的其余部分,帮助.. 例如:******* The用户猜到 A 然后他只会陶醉正确的字母:** A ****
let storeWord = ["house", "dog", "love"];
var randomWord = storeWord[Math.floor(Math.random() * storeWord.length)];
console.log(randomWord);
let asteriskWord = randomWord.replace(/./g, '*');
console.log(asteriskWord);
let userGuess = input.question("type your guess(a single letter): ");
if(/^[a-zA-Z]/.test(userGuess) && userGuess.length == 1) {
checkLetter();
}
else{
console.log("You need to put one letter");
}
function checkLetter(){
if (randomWord.includes(userGuess)){
let revelWord = asteriskWord.replace(/userGuess/g, )
return true; }}
解决方案
不幸的是,该.replace()
功能在这种情况下不起作用。例如在这一行:
let revelWord = asteriskWord.replace(/userGuess/g, )
您是说,获取asteriskWord
并替换“字母” - (通常是正则表达式)与userGuess
. 因为这asteriskWord
只是一个带星号的字符串,所以它不起作用。
我们可以做的是创建我们自己的replaceAt
函数——它的工作方式与@Anbesa 提到的类似。
创建一个新函数,例如:
function replaceAt(str, index, replacement) {
return (
str.substr(0, index) + replacement + str.substr(index + replacement.length)
);
}
然后你的checkLetter
功能可以变成:
function checkLetter() {
let matchedLetters = randomWord.match(userGuess);
return replaceAt(asteriskWord, matchedLetters.index, userGuess);
}
推荐阅读
- python - 在变量中组合多个范围函数时不支持的操作数类型 Python
- arrays - 显示第一个数组元素 - ReactJS
- regex - 使用负前瞻根本不会导致匹配
- android - 如何在 IS4 中授权我的 Android 应用程序
- r - R xlim ylim 和 coord_cartesian 未按预期运行
- sql - 在 SQL 中按相等数量的记录对记录进行分组
- r - 两个df R中的值之间的对应关系
- airflow - 在气流 DAG 中使用 DockerOperator 和 CeleryExecutor
- python - 在诗歌运行期间导入本地包
- bash - Bash FTP 上传 - 要记录的事件