我理解如何使用indexOf()查找字符串中第一次出现的字符。例如。
Str.indexOf("a");
但是如何从字符数组中找到第一个出现的字符?
我的代码是:
function translatePigLatin(str) {
var vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'];
for (var i = 0; i < vowels.length; i++) {
if (vowels[i] === str.charAt(0)) {
return str + "way";
} else {
return str.substr(0, str.indexOf(vowels[i]));
}
} return str;
}
我想在第一次出现元音时结束子串。有没有一种简单的方法可以做到这一点?
提前致谢!
答案 0 :(得分:0)
您也可以使用数组中的indexOf()
简单地获取角色的索引。
var vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'];
var i = vowels.indexOf('i'); // 2
答案 1 :(得分:0)
您可以将String.search与正则表达式一起使用:
var vowels = /[aeiou]/i;
console.log('test'.search(vowels));
console.log('cherry'.search(vowels));
console.log('apricot'.search(vowels));
您可以将其集成到您的代码中,如下所示:
function translatePigLatin(str) {
var vowels = /[aeiou]/i;
if (str.charAt(0).match(vowels)) {
return str + "way";
} else {
return str.substr(0, str.search(vowels));
}
}
console.log(translatePigLatin('cherry'));
console.log(translatePigLatin('apricot'));
console.log(translatePigLatin('test'));
我认为这不是函数的最终版本,还有一些逻辑需要实现。
答案 2 :(得分:-2)
function translatePigLatin(str) {
var vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'];
for(var i=0;i<vowels.length;i++){
if(str.charAt(0)==vowels[i]){
return str+"way";
}
}
return str.substring(getVowelPos(str,vowels),str.length)+str.substring(0,getVowelPos(str,vowels))+"ay";
}
function getVowelPos(str,vowels){
var retval=str.length;
for(var j=0;j<vowels.length;j++){
if(str.indexOf(vowels[j])!=-1&&str.indexOf(vowels[j])<retval){
retval=str.indexOf(vowels[j]);
}
}
return retval;
}
alert(translatePigLatin("plolo"));
&#13;