0

文を単語に分割し、次に単語を文字に分割し、各単語の最初の文字を大文字にする関数を作成しようとしています。はい、それは宿題であり、何度も試した後、私はそれを機能させることができません。私をつまずかせることの1つは、split()を2回使用することです。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<head>
    <title>Sentence Case Conversion</title>
    <script type= "text/javascript">
    /* <![CDATA[ */
    /* ]]> */
    </script>
</head>

<body>
    <form name= "convertText">
        <p>Enter text to convert to sentence case:</p>
        <input type ="text" size ="120" name="userInput">
        </br>
        </br>

        <input name= "Submit" onclick= "sentenceCase()" value= "Convert Text" type= "button">
    </form>

        </br>
        </br>
        </br>

        <form name= "ouputText">
        <p>Here is your converted text:</p>
        <input type="text" size="120" name="result">
            <script type= "text/javascript">
            /* <![CDATA[ */
            function sentenceCase() {

                var userInput = document.forms[0].userInput.value;        //get user input
                var wordArray = userInput.split(" ");                     //split user input into individual words

                for (var i=0; i<wordArray.length; i++) { 
                     var characterArray = wordArray[i].split("");
                     characterArray[0].toUpperCase();
                     wordArray[i]=characterArray.join;
                }

            /* ]]> */
            </script>
</body>
</html>
4

3 に答える 3

3

あなたは近いです:

> characterArray[0].toUpperCase();

それは値を返します、それはその場でそれを変更しません

> wordArray[i]=characterArray.join;

joinメソッドです。呼び出す必要があります。また、値を返し、その場で何も変更しません。代わりに部分文字列の使用を検討することもできますが、配列を使用すると次のようになります。

var firstChar = characterArray.shift().toUpperCase();
var newWord = firstChar + characterArray.join('');

トリックを行う必要があります。

于 2012-12-14T02:55:49.580 に答える
2

toUpperCase()変数をその場で変更することはできません。大文字の文字列を返します。そう:

characterArray[0] = characterArray[0].toUpperCase();

...しかし、charAt()andsubstring()を使用することもできます:

wordArray[0] = wordArray[0].charAt(0).toUpperCase() + wordArray[0].substring(1);

...そして、実際に呼び出す必要がありますjoin():

wordArray[i] = characterArray.join();

...そして、おそらく空の文字列を渡したいと思うでしょう。そうしないと、デフォルトでセパレータとしてコンマになります。

楽しい方法は'hello world this is camel case'.replace(/\s(\S)/g, function($0, $1) { return $1.toUpperCase(); })、しかしです。

于 2012-12-14T02:51:57.953 に答える
1

共通要素を理解しやすいコードに分解します。

function toCamelCase(sentence) {
    var words = sentence.split(" ");
    var length = words.length;

    for (var i = 1; i < length; i++)
        words[i] = capitalize(words[i]);
    return words.join("");
}

function capitalize(word) {
    return word.charAt(0).toUpperCase() + word.slice(1);
}

文を大文字に変換できるようになりました。変換する前に文から句読点を削除することをお勧めします。以下にいくつかの例を示します。

alert(toCamelCase("java script")); // javaScript
alert(toCamelCase("json to XML")); // jsonToXML
alert(toCamelCase("ECMA script")); // ECMAScript

最後の 1 つは PascalCase のように見えますが、有効なキャメルケースと見なされます。ここでデモを見ることができます: http://jsfiddle.net/GhKmf/

于 2012-12-14T03:07:37.600 に答える