jQuery:使用substr()执行此操作的替代方法

时间:2012-09-08 20:37:49

标签: javascript jquery

我正在进行一项代码运动,我们正在使用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有什么问题?你能帮忙吗?

1 个答案:

答案 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);
}

工作演示:http://jsfiddle.net/jfriend00/EwfxW/