2

所以,我想要做的是创建一个函数,允许用户输入一个字符串,然后它将以猪拉丁语输出字符串。这是我现在的功能:

function wholePigLatin() {
            var thingWeCase = document.getElementById("isLeaper").value;
            thingWeCase = thingWeCase.toLowerCase();
            var newWord = (thingWeCase.charAt(0));

            if (newWord.search(/[aeiou]/) > -1) {
                alert(thingWeCase + 'way')
            } else {
                var newWord2 = thingWeCase.substring(1, thingWeCase.length) + newWord + 'ay';
                alert(newWord2)
            }
        }

我如何获得它以便它识别每个单词,然后按照我上面的方式修改每个单词?

4

4 回答 4

1

修改函数以接受参数并返回值

function wholePigLatin(thingWeCase) {
    thingWeCase = thingWeCase.toLowerCase();
    var newWord = (thingWeCase.charAt(0));

    if (newWord.search(/[aeiou]/) <= -1) {
       newWord = thingWeCase.substring(1, thingWeCase.length) + newWord + 'ay';
    }
    else{
       newWord = thingWeCase + 'way';
    }
    return newWord;
}

那么你可以这样做:

var pigString = str.split(" ").map(wholePigLatin).join(" ");

这会将字符串拆分为单词,将每个单词传递给函数,然后将输出与空格重新连接在一起。

或者,如果您总是希望从同一源获取数据,您可以从函数中获取数组并拆分/加入它。

于 2013-03-19T16:09:40.180 回答
0

您可以将单词与正则表达式匹配并用回调替换它们:

var toPigLatin = (function () {
    var convertMatch = function (m) {
        var index = m.search(/[aeiou]/);
        if (index > 0) {
            return m.substr(index) + m.substr(0,index) + 'ay';
        }
        return m + 'way';
    };
    return function (str) {
        return str.toLowerCase().replace(/(\w+)/g, convertMatch);
    };
}());

console.info(toPigLatin("lorem ipsum dolor.")); // --> oremlay ipsumway olorday.
于 2013-03-19T16:16:53.320 回答
0

使用 javascript 的 split() 方法。在这种情况下,您可以采取 dovar arrayOfWords = thingWeCase.split(" ") 这将字符串拆分为字符串数组,拆分点位于每个空格处。然后,您可以轻松浏览结果数组中的每个元素。

于 2013-03-19T16:03:38.063 回答
0

编写一个在循环中调用你的单字函数的函数:

function loopPigLatin(wordString) {
   words = wordString.split(" ");
   for( var i in words)
     words[i] = wholePigLatin(words[i]);
   return words.join(" ");
}

当然,要这样调用它,您需要对原始函数稍作改动:

function wholePigLatin(thingWeCase) {
     // everything after the first line
     return newWord2; // add this at the end
}

然后loopPigLatin像这样调用:

document.getElementById("outputBox").innerHTML = loopPigLatin(document.getElementById("isLeaper").value);
于 2013-03-19T16:09:38.230 回答