Javascript FCC中间算法脚本:Pig Latin
这个测试的目的是取一个英语单词的第一个辅音(或辅音串),将它移到单词的末尾,并加上后缀“ay”。如果一个单词以元音开头,你只需在末尾加上“way” 我的主要问题是遍历字符串,直到它到达一个元音,并将第一个辅音字母放在字符串的末尾 我在遍历字符串直到它到达元音之前遇到困难。如何迭代字符串直到它在第一个元音处停止?在第一个辅音字母到达元音之前,你是如何得到所有的第一个辅音字母的?我通过使用for循环来迭代字符串,如果第一个字母是辅音,则使用“if”语句Javascript FCC中间算法脚本:Pig Latin,javascript,string,Javascript,String,这个测试的目的是取一个英语单词的第一个辅音(或辅音串),将它移到单词的末尾,并加上后缀“ay”。如果一个单词以元音开头,你只需在末尾加上“way” 我的主要问题是遍历字符串,直到它到达一个元音,并将第一个辅音字母放在字符串的末尾 我在遍历字符串直到它到达元音之前遇到困难。如何迭代字符串直到它在第一个元音处停止?在第一个辅音字母到达元音之前,你是如何得到所有的第一个辅音字母的?我通过使用for循环来迭代字符串,如果第一个字母是辅音,则使用“if”语句 function translatePigLa
function translatePigLatin(str) {
var vowel = /[aeiou]/g;
var cons = /[^aeiou]/g;
console.log(cons.test(str[2]))
var consonants = [];
var index = str.charAt(0);
console.log(str.slice(1, str.length))
for(var i = 0; i < str.length; i++){
console.log(str[i])
if(cons.test(str[i])){
consonants.push(str.charAt(i));
console.log(consonants)
var slice = str.slice(consonants.length, str.length);
}
}
return consonants + 'ay';
}
函数翻译拉丁语(str){
变量元音=/[aeiou]/g;
变量cons=/[^aeiou]/g;
console.log(cons.test(str[2]))
var辅音=[];
var指数=str.charAt(0);
console.log(str.slice(1,str.length))
对于(变量i=0;i
翻译拉丁语(“手套”) 我会专注于找到第一个元音的索引。然后您可以测试该索引是0还是其他值。如果为零,只需在该索引上添加
路径
或切片:
函数翻译拉丁语(str){
常量元音=['a','e','i','o','u'];
let ind=[…str.toLowerCase()].findIndex(s=>元音。包含)
返回ind
?str.slice(ind)+str.slice(0,ind)+'ay'//不以元音开头
:str+'way'
}
console.log(翻译为拉丁语(“手套”)
console.log(翻译为拉丁文('apple'))
console.log(拉丁文('Mark'))
log(translateepiglatin('Javascript'))
我只想找到第一个元音的索引。然后您可以测试该索引是0还是其他值。如果为零,只需在该索引上添加路径
或切片:
函数翻译拉丁语(str){
常量元音=['a','e','i','o','u'];
let ind=[…str.toLowerCase()].findIndex(s=>元音。包含)
返回ind
?str.slice(ind)+str.slice(0,ind)+'ay'//不以元音开头
:str+'way'
}
console.log(翻译为拉丁语(“手套”)
console.log(翻译为拉丁文('apple'))
console.log(拉丁文('Mark'))
log(translateUplatin('Javascript'))
我认为应该将问题分解为一些基本情况,就像我在下面的代码中所做的那样:
函数有(a,e){
返回a.indexOf(e)>-1;
}
函数translateWord(str){
让誓言=['a','e','i','o','u'];
vows=vows.concat(vows.map(v=>v.toUpperCase());
设LastVouerLindex=0;
让conv='';
for(设i=0;itranslateWord(w));
return.join(“”);
}
设s=translateToPigLatin(“我没有节奏”);
控制台日志代码>我认为您应该将问题分解为一些基本情况,就像我在下面的代码中所做的那样:
检查第一个字母是否为元音;如果为真,只需在单词末尾添加“way”并打破循环即可
如果当前字母是辅音(这意味着第一个条件不是真的),我们就继续迭代
如果当前的字母是元音,我们将单词分成两个独立的部分,并以相反的方式添加它们,不要忘记添加“ay”后缀
在下面的代码中,我还向元音数组添加了大写版本。经过一些修改,可以使其跳过分隔符。猪拉丁语规则是我在维基百科上找到的(尽管我没有找到任何只包含辅音的单词的规则,所以我把它们放在第一个例子中)。
干杯
函数有(a,e){
返回a.indexOf(e)>-1;
}
函数translateWord(str){
让誓言=['a','e','i','o','u'];
vows=vows.concat(vows.map(v=>v.toUpperCase());
设LastVouerLindex=0;
让conv='';
for(设i=0;ifunction translatePigLatin(str) {
let res = '';
let regex = /[aeiou]/;
if (!regex.test(str)) {
res = str + 'ay';
} else if (regex.test(str[0])) {
res = str + 'way';
} else {
let x = str.indexOf(regex.exec(str)[0]);
res = str.substr(x) + str.substr(0, x) + 'ay'
}
return res;