首页 文章

查找字符的索引 - JavaScript

提问于
浏览
-1

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

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

    我假设这不是函数的最终版本,仍然有一些逻辑要实现 .

  • 0
    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"));
    
  • -2

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

    var vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'];
    var i = vowels.indexOf('i'); // 2
    

相关问题