拆分方法然后连接

时间:2013-03-19 20:12:48

标签: javascript arrays methods split

我需要做的是将此函数转换为分割输入字符串的每个部分的位置,然后将pig latin放在每个单词上,这意味着它会在每个单词的末尾添加一个。这是我到目前为止所做的:

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

            }
        }

现在,它只需要字符串的第一个字母并将其添加到结尾。它不会改变每个单词到猪拉丁语,只是整个短语。我想知道有谁可以帮我这个。感谢。

3 个答案:

答案 0 :(得分: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 :(得分: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");

答案 2 :(得分:0)

您可能想要拆分第一个辅音值,然后将它们与'ay'一起追加。

我会使用正则表达式来完成此任务。 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示例现在包括处理非单词非数字字符