2015-10-14 15 views
0

基本上,挑戰是要有一個算法,接受一個字符串,並返回大寫的每個單詞的開頭。足夠簡單,但我發現在找到循環中的空間後,如何將字母大寫(可能有更好的方法)。陷入一個挑戰,讓我大寫每個單詞的開頭

這裏是我的代碼:

var capitalize = function(string){ 

var split = string.split(" "); 
var collection = []; 
var store = []; 

for(var i = 0; i < split.length; i++){ 

    if(split[i]){ 

     if(split[i] === " "){ 
     var init = split[i+1].toUpperCase(); 
     store.push(init); 
     collection.push(split[i]); 
     } else{ 
     collection.push(split[i]); 
     } 
    } 

} 

var temp = collection.join(" "); 
var final = temp.charAt(0).toUpperCase() + temp.slice(1); 

return final; 

} 

顯然,在我的for循環,它不會讓我修改,我正在通過遍歷數組。然後我嘗試了一個while循環,我嘗試使用array.map,但它仍然不起作用。我似乎無法理解如何在找到空格(「」)後能夠利用該單詞。

任何幫助表示讚賞。

+0

您需要在這裏添加一個空格:'string.split(「」);' - 在引號之間 – ochi

+3

'.toUpperCase()'返回新值並且不會在原來的位置更改值 – Andreas

+0

Andreas,謝謝。我會做出改變。我的整個代碼都是圍繞大寫字母對數組本身進行更改。我非常愚蠢。 –

回答

3

難道你不能通過" "分割字符串,並使每個集合條目的第一個字母爲大寫?

看一看here如何使第一個字母大寫。

+0

解決了我的問題。謝謝。 –

+0

@ MabehAl-Zuq亞德克歡迎:) – Wavemaster

0

爲什麼要做到這一點的JS時,你可以做到這一點在CSS

p.capitalize { 
    text-transform: capitalize; 
} 

<p class='capitalize'> 
    hello how are you? 
</p> 

jsfiddle

+1

因爲這是OP的問題,JS代碼並不完全意味着有HTML。 –

+0

這是一個JS挑戰。 –

0

沒有必要對所有的變量

剛:

function (str){ return str.replace(str.charAt(0), str.charAt(0).toUpperCase()) }

會做。

相關問題