2017-01-10 4 views
0

私はこの単純な機能を持っています。ユーザーが文章を入力することができ、ユーザーの選択に基づいて1文字を大文字にします。例えば、ユーザが文 "hey"の最初の文字を大文字にすることを選択した場合、彼はtitleCase("hey", 0)と書くだろうが、 "Hey"という単語の代わりに大文字の1文字しか返さない。私はそれを配列に分割しているからですが、大文字のものだけでなく、どのように単語全体を返すことができますか?私のコード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));

関連する問題