0
function LetterCapitalize(str) { 
  return str.charAt(0).toUpperCase()+ str.slice(1);
  var spaceIndex=str.indexOf(' ');
  var first=str.substring(0,spaceIndex);
  var second=str.substring(spaceIndex+1,str.length)

  return LetterCapitalize(first)+" " + LetterCapitalize(second)
}
console.log(LetterCapitalize("hello world"))

何を間違えたのかわかりませんが、hello の H だけが大文字になっています

4

5 に答える 5

1

関数が呼び出されると、最初に行うことは次のとおりです。

return str.charAt(0).toUpperCase()+ str.slice(1);

これは、大文字に変換された文字列の最初の文字と、インデックス 1 から始まる文字列の残り (そのまま) を返します。

関数はそこから戻るため、関数内の他のものは実行されていません

次のようなものはどうですか:

function LetterCapitalize(str) { 
    var words = str.split(' '); // create an array of each word
    for(var i = 0; i < words.length; i++) // Loop through each word
        words[i] = words[i].charAt(0).toUpperCase() + words[i].slice(1); // capitalize first character of each word

    return words.join(' '); // join the array back into a string
}

また、単に表示目的でこれを実行しようとしている場合は、CSS を使用できます。text-transform: capitalize;

于 2013-09-06T20:51:25.623 に答える
1

関数のコードの最初の行を参照してください。

関数を終了し (戻ります)、その関数内の他のコードは実行されません。JavaScript インタープリターに関する限り、コードは次のようになります。

function LetterCapitalize(str) { 
    return str.charAt(0).toUpperCase()+ str.slice(1);
}

したがって:Hello world

于 2013-09-06T20:52:17.050 に答える
0

これは、この回答を書いた Mike Christensen による上記の非常にクリーンで簡潔なコードに対する簡単な調整です (1 つを除いてすべての点で私のものと同じです)。

関数 LetterCapitalize(str) {

var words = str.split(' '); // create an array of each word
for(var i = 0; i < words.length; i++) // Loop through each word
    words[i] = words[i].charAt(0).toUpperCase() + words[i].slice(1); // capitalize first character of each word

return words.join(' '); // join the array back into a string

}

編集: words[i].charAt(0).toUpperCase() #=> words[i][0].toUpperCase()

このバージョンを含めるのは、他の人が目的の文字を呼び出すさまざまな方法を理解できるようにするためだけであり、コードで正確に何が起こっているかについての理解を深めるのに役立つかもしれません. 私はこれが私を助けたことを知っています。

于 2014-01-18T11:21:11.927 に答える
0

この機能:

function LetterCapitalize(str) { 
    return str.charAt(0).toUpperCase()+ str.slice(1);
    var spaceIndex=str.indexOf(' ');
    var first=str.substring(0,spaceIndex);
    var second=str.substring(spaceIndex+1,str.length)

    return LetterCapitalize(first)+" " + LetterCapitalize(second)
}

次の関数と論理的に同等です。

function LetterCapitalize(str) { 
    return str.charAt(0).toUpperCase()+ str.slice(1);
}

関数から離れるとすぐにreturn、その関数では他に何も起こりません。値が返されたので、完了です。この場合、返される値は、1 つの大文字と残りの文字列です。文字列内の 2 番目の単語を検索しようとしても実行されません。

于 2013-09-06T20:52:14.833 に答える
0

CSS を使用できる場合は、非常に簡単です。

  <style type="text/css">
    h1.uppercase { text-transform: capitalize}
    </style>
    <h1 class="uppercase">Uppercase or lowercase?</h1>
   Output :** Uppercase Or Lowercase **

それはあなたが探しているものですか?

于 2013-09-06T20:52:32.653 に答える