2015-12-13 60 views
1

因此,作爲一個相對較新的程序員,我試圖創建一個非常簡單的ASCII Hangman遊戲。我試圖找出如何根據所選單詞的長度創建一個下劃線(_)的字符串。基於JavaScript中的長度將字符串轉換爲一系列下劃線

例如,取詞凱澤,我想借此,「word.length(其中字= 「凱撒」)and convert it to " _ _ _ _ _ _`」。在此先感謝!

+2

你嘗試了什麼? –

+0

就像'var u = new Array(「Kaiser」.length).join('_')'一樣簡單,並且基於該答案,這看起來很像[**重複字符N次** ](http://stackoverflow.com/questions/1877475/repeat-character-n-times) – adeneo

回答

6

我第一猜測是像這樣的工作。

var underscored = string.split('').map(function(char) { 
    return char = '_ '; 
}).join(''); 

獲取每一個字符用split函數的字符串中,並改變每一個人物的狀態,使用map功能。不過,這只是給我們一個陣列。我們需要再次執行類型轉換以將其重新轉換爲字符串。爲此,我們可以使用join方法。我們加入的分隔符只是一個空字符串''

另一種可能性是與替換功能

var underscored = string.replace(/./g, '_ '); 

正則表達式在這裏是很簡單的。期間.表示任何字符。 global(g)標誌表示查找以前的正則表達式的所有實例。

這個函數的第二個參數就是我們希望這些字符變成的東西。由於我們需要下劃線之間的空格,因此這將是_

請注意,replace方法不具有破壞性。換句話說,它不會修改原始數組。您需要將其存儲在單獨的變量中。因爲如果您再次致電string,則會返回kaiser

+0

啊打敗了我,我會建議'.replace()' –

+1

或結合'.split'和正則表達式: 'string.split(/./)。join('_')';) – pawel

+0

我的歉意pawel。我只注意到了這一點。我將在'map'方法中解決這個問題 –

1

您不必更換任何基於第一個字的長度,例如只需要創建新的字符串:

var underscore_word = Array(word.length).join("_ "); 

看看Repeat Character N Times

希望這會有所幫助。

+0

Where @NathanP。 ??我看不到它。 –

+1

真的,評論不是答案! –

+3

@ZakariaAcharki對此我確定,我不希望每個人都在發帖之前閱讀每條評論。我不知道你爲什麼被低估,這是一個合法和相當有效的解決方案。 – pawel

3
var str = "Kaiser"; 
var resStr = ""; 
for (i = 0; i < str.length; i++) { 
    resStr = resStr + " _"; 
} 
相關問題