我正在进行一项代码运动,我们正在使用jQuery / JavaScript构建一个刽子手游戏。播放器以一串下划线字符“ ”开头,如果他们猜到单词中的字母,则应使用该字母替换相应的下划线。例如,如果单词是'tree'而玩家猜测'e',则该函数应返回' _ee'
我用gsub写了这个函数。 N是应该更改字符串的位置,c是要在原始字符串上的该位置插入的字符。这通过了codecademy的测试。
function alterAt ( n, c, originalString ) {
var k = originalString.gsub(n, c );
return k;
}
但是,codecademy告诉我使用函数substr()和concatenation来返回一个替换了字母的新字符串。我无法弄清楚如何这样做,我甚至不确定这是否是更好的方法。使用gsub有什么问题?你能帮忙吗?
答案 0 :(得分:5)
以下是使用substr()
的版本:
function alterAt ( n, c, originalString ) {
return(originalString.substr(0, n) + c + originalString.substr(n + 1));
}
工作演示:http://jsfiddle.net/jfriend00/YX94Q/
如果在你的刽子手游戏的背景下,你有两个字符串,一个是原始字符串,一个是下划线加猜测字母,你想对下划线应用猜测,你可以这样做:
function alterAt ( n, c, originalString ) {
return(originalString.substr(0, n) + c + originalString.substr(n + 1));
}
function replaceMatchingUnderscores(guessChar, displayStr, original) {
var index = 0;
while ((index = original.indexOf(guessChar, index)) !== -1) {
displayStr = alterAt(index, guessChar, displayStr);
index++;
}
return(displayStr);
}