因此,作爲一個相對較新的程序員,我試圖創建一個非常簡單的ASCII Hangman遊戲。我試圖找出如何根據所選單詞的長度創建一個下劃線(_)的字符串。基於JavaScript中的長度將字符串轉換爲一系列下劃線
例如,取詞凱澤,我想借此,「word.length(其中字= 「凱撒」)and convert it to "
_ _ _ _ _ _`」。在此先感謝!
因此,作爲一個相對較新的程序員,我試圖創建一個非常簡單的ASCII Hangman遊戲。我試圖找出如何根據所選單詞的長度創建一個下劃線(_)的字符串。基於JavaScript中的長度將字符串轉換爲一系列下劃線
例如,取詞凱澤,我想借此,「word.length(其中字= 「凱撒」)and convert it to "
_ _ _ _ _ _`」。在此先感謝!
我第一猜測是像這樣的工作。
var underscored = string.split('').map(function(char) {
return char = '_ ';
}).join('');
獲取每一個字符用split
函數的字符串中,並改變每一個人物的狀態,使用map
功能。不過,這只是給我們一個陣列。我們需要再次執行類型轉換以將其重新轉換爲字符串。爲此,我們可以使用join
方法。我們加入的分隔符只是一個空字符串''
。
另一種可能性是與替換功能
var underscored = string.replace(/./g, '_ ');
正則表達式在這裏是很簡單的。期間.
表示任何字符。 global(g)
標誌表示查找以前的正則表達式的所有實例。
這個函數的第二個參數就是我們希望這些字符變成的東西。由於我們需要下劃線之間的空格,因此這將是_
。
請注意,replace
方法不具有破壞性。換句話說,它不會修改原始數組。您需要將其存儲在單獨的變量中。因爲如果您再次致電string
,則會返回kaiser
。
啊打敗了我,我會建議'.replace()' –
或結合'.split'和正則表達式: 'string.split(/./)。join('_')';) – pawel
我的歉意pawel。我只注意到了這一點。我將在'map'方法中解決這個問題 –
您不必更換任何基於第一個字的長度,例如只需要創建新的字符串:
var underscore_word = Array(word.length).join("_ ");
希望這會有所幫助。
Where @NathanP。 ??我看不到它。 –
真的,評論不是答案! –
@ZakariaAcharki對此我確定,我不希望每個人都在發帖之前閱讀每條評論。我不知道你爲什麼被低估,這是一個合法和相當有效的解決方案。 – pawel
var str = "Kaiser";
var resStr = "";
for (i = 0; i < str.length; i++) {
resStr = resStr + " _";
}
你嘗試了什麼? –
就像'var u = new Array(「Kaiser」.length).join('_')'一樣簡單,並且基於該答案,這看起來很像[**重複字符N次** ](http://stackoverflow.com/questions/1877475/repeat-character-n-times) – adeneo