2013-03-19 35 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示例现在包括处理非单词非数字字符