2012-09-08 27 views
1

我正在開發一個codecademy練習,我們使用jQuery/JavaScript構建hangman遊戲。玩家以一串下劃線字符''開始,如果他們猜測單詞中的一個字母,則應該用該字母替換適當的下劃線。例如,如果單詞是'tree'並且玩家猜測'e',則函數應該返回'_ee'jQuery:使用substr()執行此操作的替代方法()

我使用gsub編寫函數。 N是字符串被認爲是對齊的位置,c是要插入原始字符串上該位置的字符。這通過了codecademy的測試。

function alterAt (n, c, originalString) { 
    var k = originalString.gsub(n, c); 
    return k; 

} 

但是,codecademy告訴我使用substr()和concatenation函數來返回一個新的字符串,並替換字母。我無法弄清楚如何做到這一點,我甚至不確定這是否是更好的方法。使用gsub有什麼問題?你能幫忙嗎?

+0

'gsub'是PrototypeJS的一部分,不是核心JavaScript。 –

回答

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/

+0

謝謝,這是怎麼回事'var index = 0,found;'我沒有得到在那裏發現的東西。你是否將兩個變量分配給索引?被發現一個新的變量? – Leahcim

+0

@Michael - 我簡化它不需要單獨的'發現'變量,但該行只是在一行中聲明兩個變量(逗號分隔)。 'index'初始化爲零,'found'未初始化。 – jfriend00

相關問題