1

我需要做的是让这个函数将输入的字符串的每个部分分开,然后在每个单词上加上 pig latin,这意味着它在每个单词的末尾添加了 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);

            }
        }

现在,它只取字符串的第一个字母并将其添加到末尾。它不会将每个单词都更改为拉丁语,而是将整个短语。我想知道有人可以帮助我解决这个问题。谢谢。

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

下一部分是 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 示例现在包括对非单词非数字字符的处理

于 2013-03-19T20:27:01.000 回答