查找字符的索引 - JavaScript

Finding the index of a character - JavaScript

我了解如何使用 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;
}

我想在第一次出现元音时结束子串。有没有简单的方法可以做到这一点?

提前致谢!

您也可以在数组中使用 indexOf() 简单地获取字符的索引。

您可以将 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'));

我假设这不是函数的最终版本,还有一些逻辑需要实现。

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