2013-03-19 37 views
1

我需要做的是使該函數能夠拆分輸入字符串的每個部分,然後在每個單詞上放置拉丁字母,這意味着它在每個單詞的末尾添加ay。這是我到目前爲止有:拆分方法,然後連接

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); 

      } 
     } 

現在,它只是需要字符串的第一個字母,並將其添加到年底。它並沒有改變每一個詞拉丁拉丁,只是整個短語。我想知道任何人都可以幫助我。謝謝。

+1

我不是故意假設,但應該將其標記爲「作業」?這個標籤的存在使得給你答案的人知道給出更詳細的內部解釋。 – 2013-03-19 20:16:01

+0

請記住[拉丁文豬的規則](http://en.wikipedia.org/wiki/Pig_latin)。 – Paul 2013-03-19 20:16:33

+0

@ChrisSobolewski此標籤已被刪除,不應使用。 – 2013-03-19 20:17:35

回答

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); 

這是通過在地方,替換文本的話,使用函數變換每個單詞。

+1

我想他想將「豬拉丁文」轉換爲「igpay atinlay」 – 2013-03-19 20:15:42

+0

@mgasparel我不知道這個「豬拉丁文」的東西,但你似乎是對的。 – 2013-03-19 20:20:42

+0

@ dstroy我只是試過。它工作,但在整個短語。我如何使其單獨修改每個單詞,如「igpay atinlay」,然後將它們放回到一起? – 2013-03-19 20:23:51

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"); 
+0

試着用'pigLatin(「這是一個測試。」);' – 2013-03-19 20:21:29

0

你可能想分裂出去的第一個輔音值,然後用追加他們一起「唉」。

我會用一個正則表達式來實現這一點。顯示一個例子的Here is a JSFiddle

第一部分被分割的單詞

var words = text.split(" "); 

接着的部分是piglatinify ™每個字

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示例現在包括處理非單詞非數字字符