查找字符的索引 - JavaScript

时间:2016-11-14 12:53:06

标签: javascript indexof

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

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

提前致谢!

3 个答案:

答案 0 :(得分:0)

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

答案 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)

&#13;
&#13;
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;
&#13;
&#13;