2

だから、私がしようとしているのは、ユーザーが文字列を入力できるようにする関数を作成し、文字列を豚ラテン語で出力することです。ここに私の機能があります:

function wholePigLatin() {
            var thingWeCase = document.getElementById("isLeaper").value;
            thingWeCase = thingWeCase.toLowerCase();
            var newWord = (thingWeCase.charAt(0));

            if (newWord.search(/[aeiou]/) > -1) {
                alert(thingWeCase + 'way')
            } else {
                var newWord2 = thingWeCase.substring(1, thingWeCase.length) + newWord + 'ay';
                alert(newWord2)
            }
        }

各単語を認識し、上記の方法で各単語を変更するにはどうすればよいですか?

4

4 に答える 4

1

引数を取り、値を返すように関数を変更します

function wholePigLatin(thingWeCase) {
    thingWeCase = thingWeCase.toLowerCase();
    var newWord = (thingWeCase.charAt(0));

    if (newWord.search(/[aeiou]/) <= -1) {
       newWord = thingWeCase.substring(1, thingWeCase.length) + newWord + 'ay';
    }
    else{
       newWord = thingWeCase + 'way';
    }
    return newWord;
}

次に、これを行うことができます:

var pigString = str.split(" ").map(wholePigLatin).join(" ");

これにより、文字列が単語に分割され、各単語が関数に渡され、出力がスペースで結合されます。

または、常に同じソースからデータを取得したい場合は、配列を取得して関数内から分割/結合することもできます。

于 2013-03-19T16:09:40.180 に答える
0

JavaScript の split() メソッドを使用します。この場合、次のように実行できます。var arrayOfWords = thingWeCase.split(" ") これにより、文字列が文字列の配列に分割されます。分割ポイントは各スペースにあります。次に、結果の配列の各要素を簡単に調べることができます。

于 2013-03-19T16:03:38.063 に答える
0

ループ内で単一単語関数を呼び出す関数を作成します。

function loopPigLatin(wordString) {
   words = wordString.split(" ");
   for( var i in words)
     words[i] = wholePigLatin(words[i]);
   return words.join(" ");
}

もちろん、このように呼び出すには、元の関数を少し変更する必要があります。

function wholePigLatin(thingWeCase) {
     // everything after the first line
     return newWord2; // add this at the end
}

そして、次loopPigLatinのように呼び出します。

document.getElementById("outputBox").innerHTML = loopPigLatin(document.getElementById("isLeaper").value);
于 2013-03-19T16:09:38.230 に答える
0

単語を正規表現に一致させ、それらをコールバックに置き換えることができます:

var toPigLatin = (function () {
    var convertMatch = function (m) {
        var index = m.search(/[aeiou]/);
        if (index > 0) {
            return m.substr(index) + m.substr(0,index) + 'ay';
        }
        return m + 'way';
    };
    return function (str) {
        return str.toLowerCase().replace(/(\w+)/g, convertMatch);
    };
}());

console.info(toPigLatin("lorem ipsum dolor.")); // --> oremlay ipsumway olorday.
于 2013-03-19T16:16:53.320 に答える