1

私がする必要があるのは、入力された文字列の各部分を分割する場所にこの関数を作成し、各単語に豚ラテン語を配置することです。つまり、各単語の末尾に y を追加します。これが私がこれまでに持っているものです:

function pigLatin(whatWeTitle) {

            var alertThis = " ";
            var splitArray = whatWeTitle.split(" ");

            for ( i = 0; i < splitArray.length; i++) {
                alertThis = makeSentenceCase(splitArray[i]) + " ";
                var newWord3 = splitArray.substring(1, whatWeTitle.length) + newWord + 'ay';
                alert(newWord3);

            }
        }

現在、文字列の最初の文字を取得して末尾に追加するだけです。各単語を豚ラテン語に変更するのではなく、フレーズ全体を変更します。私は誰かがこれで私を助けることができるのだろうかと思っていました. ありがとう。

4

3 に答える 3

2

[i]配列のアイテムを取得するには、次を使用する必要があります。

 var word = splitArray[i];
 var newWord3 = word.substring(1,word.length) + word[0]  + 'ay';

まったく新しい文で終わらせたい場合は、各単語を変更して最後に結合するのが最善です。

  var splitArray = whatWeTitle.split(" ");
  for ( i = 0; i < splitArray.length; i++) {
      var word = splitArray[i];
      splitArray[i] = word.substring(1,word.length) + word[0]  + 'ay';
  }
  var newSentence = splitArray.join(' ');
  alert(newSentence);

少しテストすると、このアルゴリズムが文中のドットやコンマを好まないことがわかります。より強力なものが必要な場合は、次のような正規表現が必要です。

var newSentence = whatWeTitle.replace(/[^\. ,]+/g, function(word){
   return word.slice(1) + word[0]  + 'ay';
});
alert(newSentence);

これは、各単語を変換する関数を使用して、テキスト内の単語をその場で置き換えることによって機能します。

于 2013-03-19T20:14:47.937 に答える
0

このようなもの ?

function pigLatin(whatWeTitle) {
    var alertThis = " ";
    var splitArray = whatWeTitle.split(" ");
    var finalString = "";
    for ( i = 0; i < splitArray.length; i++) {
        finalString += splitArray[i]+ "ay "; 
        }
    alert(finalString);
}

pigLatin("this is a test");
于 2013-03-19T20:20:32.403 に答える
0

おそらく、最初の子音の値を分割して、'ay' と共に追加する必要があります。

これを達成するために正規表現を使用します。例を示すJSFiddleを次に示します。

最初の部分は単語を分割します

var words = text.split(" ");

次の部分は、各単語をピグラチン化することです

words = words.map(function(word){ return pigLatinifyWord(word);});

これが piglatinify™ 関数です

function pigLatinifyWord(word){

    var result;

    var specialMatches = word.match(/(\W|\D)+$/);

    var specialChars;
    if(specialMatches && specialMatches.length >= 0){
        var specialIndex = word.indexOf(specialMatches[0]);
        specialChars = word.slice(specialIndex);
        word = word.substr(0, specialIndex);
    }

    var i = word.search(/^[^aeiou]/);

    if(i >= 0){
        result = word.slice(i+1) + word.slice(0, i+1) + "ay";
    }
    else{
        result = word + "ay";
    }

    if(specialChars){
        result += specialChars;
    }

    return result;
}

更新 JSFiddle の例に、単語以外の数字以外の文字の処理が含まれるようになりました

于 2013-03-19T20:27:01.000 に答える