所以,我要做的是创建一个允许用户输入字符串的函数,然后它将输出pig latin中的字符串。这是我现在的功能:
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)
}
}
如何识别每个单词,然后按照上面的方式修改每个单词?
答案 0 :(得分: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(" ");
将字符串拆分为单词,将每个单词传递给函数,然后将输出与空格连接在一起。
或者你可以从函数中获取数组并拆分/加入它,如果你总是希望从同一个源获取数据。
答案 1 :(得分:0)
使用javascript的split()方法。在这种情况下,您可以执行var
arrayOfWords = thingWeCase.split(" ")
这将字符串拆分为字符串数组,分割点位于每个空格处。然后,您可以轻松浏览结果数组中的每个元素。
答案 2 :(得分: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);
答案 3 :(得分:0)
您可以只使用regexp匹配单词并将其替换为回调:
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.