状况
我开始在客户端计算机上仅使用JavaScript和HTML来实现游戏“HANGMAN”。我完成了所有的逻辑工作。现在只剩下美学了。我被困了,因为我们不能写JS中的字符串。
a = "abcd"; a[0] = "e";
- 不允许这类事情。
我做了什么
我试过的代码,这不起作用:
我现在有以下三个数组:
a
- 包含单词字母的数组(对于gel
,这将是g,e,l
)
gai
- 此数组由用户输入的字母组成,并且在单词中。(如g
或e
)
ag
- 此数组由用户输入的字母组成,无论他们是否在猜对象中都有。
我需要做什么
我需要生成输出,以便在用户猜到的情况下显示该字母,并且单词(数组中的字母gai
)和_
代替字母尚未由用户输入的内容。
我想要什么
将返回所需输出的函数,如以下示例所述。
示例
让这个词猜到:
together
用户输入e
:
该函数应返回:_ _ _ e _ _ e _
用户然后输入d
,我的程序将提示他说这封信中没有这封信。
用户输入r
函数应返回:_ _ _ e _ _ e r
依旧......
我希望你明白这个想法!
如果你没有得到它(由于我的错误解释或其他!!)
你可以在这里玩一个刽子手游戏:Hangman
只需观察屏幕底部的输出......这就是我希望此功能生成的内容。
请帮我解决这个问题!
答案 0 :(得分:4)
只读取问题的开头(因为没有提供其他代码),有一个问题可以使用原生的javascript函数来解决。
var strarr = "Hello world!".split(''); // this will give you an array of characters to be manipulated
strarr[6] = "X"; // so you can do this
console.dir(strarr.join('')); // test it!
作为一个想法(不是我的,它来自评论),人们甚至可以将这个简单的代码包装为缺少toCharArray()函数并使用它。
另一件事是,即使是相对大量的文本,这种方法也足够快。对于测试,我使用lorem ipsum 1000字。在我相当老的开发机器上,操作在几毫秒内执行。
有关详细信息,请参阅this discussion。
答案 1 :(得分:2)
此外,您可以使用此函数在指定的字符串索引处设置char:
function setCharAt(str,index,chr) {
if(index > str.length-1) return str;
return str.substr(0,index) + chr + str.substr(index+1);
}
答案 2 :(得分:-1)
您可以使用正则表达式使用String.replace
屏蔽单词中的字母。
var word = "together"
, correct = "";
function guess(c) {
if (word.indexOf(c) > -1) {
correct += c;
}
console.log(word.replace(new RegExp("[^" + correct + "]", "g"), "_"));
}