javascript - 如何让我的程序将字符串与在字符串的特定部分按下的键交换?

标签 javascript html string

我正在用 JavaScript 开发一个刽子手游戏,如果用户猜对了一个字母,那么我需要将“-”替换为用户在单词中对应位置猜到的字母.我似乎无法替换字符串,我可以将字符串添加到“-”的开头或结尾,但是在替换它们时,我似乎无法找到解决方案。任何帮助表示赞赏。谢谢。

判断字母是否在单词中的函数

document.addEventListener("keydown", function textFunction(event)
{
if (event.keyCode > 64 && event.keyCode < 91) 
{
    var guess = event.keyCode;
    var a = "a";
    var letterGuess = String.fromCharCode(event.keyCode).toLowerCase();
    if(sayings[randomSaying].indexOf(letterGuess) >= 0){
        var letterLocation = sayings[randomSaying].indexOf(letterGuess) + 1;
        progress.innerHTML += letterGuess;
    } else {
        alert("no");
    }
    alert(letterGuess);
} 
else 
{
    alert("Please type a letter");
}
});

打印破折号

for (var i = 0; i < sayings[randomSaying].length; i++)
{
   progress.innerHTML += "-";
}

变量

var progress = document.getElementById("dashes");


var sayings = [
    "cash on the nail",
    "charley horse",
    "double cross",
    "fit as a fiddle",
    "hands down",
    "if the cap fits",
    "mumbo jumbo",
    "see red",
    "stone the crows",
    "thick and thin",
]
sayings.toString();
var randomSaying = Math.floor(Math.random()*sayings.length);

最佳答案

列出它(并删除 +1 因为它现在从 0 开始)

if(sayings[randomSaying].indexOf(letterGuess) >= 0){
    var letterLocation = sayings[randomSaying].indexOf(letterGuess);
    var li = progress.innerHTML.split('');
    li[letterLocation] = letterGuess;
    progress.innerHTML = li.join('');

.split('') 将一个字符串拆分成它的字母。因此,对于“苹果”,您得到 ['a','p','p','l','e']

然后只需用您的字母替换列表 li[letterLocation] 中的位置,然后再次li.join('') 列表。

要让它查找重复的字母,应该使用 while 循环。我们还需要在最后一场比赛之后开始搜索,这样它就不会重复找到相同的地点。

if(sayings[randomSaying].indexOf(letterGuess) >= 0) {
    var letterLocation = -1;
    while(sayings[randomSaying].indexOf(letterGuess, letterLocation + 1) >= 0) {
        var letterLocation = sayings[randomSaying].indexOf(letterGuess, letterLocation + 1);
        var li = progress.innerHTML.split('');
        li[letterLocation] = letterGuess;
        progress.innerHTML = li.join('');
    }
} else {
    alert("no");
}

关于javascript - 如何让我的程序将字符串与在字符串的特定部分按下的键交换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37301257/

相关文章:

javascript - 如何通过属性值而不是属性名称来查询元素

javascript - .load() 后回调函数不执行点击

javascript - 谷歌地图 v3 出现扭曲并加倍

javascript - 在 HTML 中使用 Canvas 处理 Sprite 加载

C++ 读取数学函数和排序

javascript - 图像上传 - MVC 在 Bootstrap 模式中使用时返回 null

javascript - 处理非英文实体名称

string - 正确获取中文字符串的宽度

javascript - Moment.js + Livestamp 时间之前基于来自服务器的 UTC 日期时间

c++ - 如何使用 ifstream 打开一个文件并一直读到最后