2017-01-10 58 views
0

我有這個簡單的功能,用戶可以輸入一個句子,並根據用戶的選擇輸入一個字母。例如,如果用戶選擇將首字母大寫爲句子「嘿」,他會寫titleCase("hey", 0),但它只會返回一個大寫字母而不是整個「嘿」字。這是因爲我把它分解爲數組,但我怎樣才能返回整個單詞,不僅是大寫字母?我的代碼根據用戶對CharAt的選擇,如何添加句子的其餘部分?

function titleCase(str, userChoice) { 
var string = str; 
var split = string.split(" "); 
for (i = 0; i < split.length; i++) { 
split[i] = split[i].charAt(userChoice).toUpperCase(); + split[i].slice(0); 
} 
console.log (split.join(" ")); 
} 

titleCase(); 

回答

3

這個怎麼樣?

只是利用選擇的索引用戶,然後返回字符串。

function titleCase(str, userChoice) { 
 
    var string = str; 
 
    var split = string.split(""); 
 

 
    split[userChoice] = split[userChoice].toUpperCase(); 
 
    return (split.join('')); 
 
} 
 

 
console.log(titleCase('hey', 0))

問題,我在你的代碼注意:

string.split(" "); - >這將在空間分割字符串,但您的字符串是一個詞所以它永遠不會分開。

+0

有更好的版本我已經發布的代碼,這個僅僅是邏輯 –

+1

的參考,是的,這是有道理的現在。我只是讓問題比現在更復雜。謝謝! – Limpuls

0

function titleCase(str, userChoice) { 
 
    var str = str; 
 
    var split = str.split(" "); 
 
    split[userChoice] = capitalize(split[userChoice]); 
 
    return split.join(" "); 
 
} 
 

 
function capitalize(s) { 
 
    return s[0].toUpperCase() + s.substr(1, s.length - 1) 
 
} 
 

 
console.log(titleCase('hello world', 0)); 
 
console.log(titleCase('hello world', 1));

相關問題