2016-11-14 1 views
-1

Je comprends comment trouver la première occurrence d'un caractère dans une chaîne en utilisant indexOf(). Par exemple.Trouver l'index d'un caractère - JavaScript

Str.indexOf("a"); 

Mais comment pourrais-je trouver la première occurrence d'un caractère à partir d'un tableau de caractères?

mon code est:

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; 
} 

Je voudrais mettre fin à la sous-chaîne à la première occurrence d'une voyelle. Existe-t-il une méthode simple pour cela?

Merci d'avance!

Répondre

0

Vous pouvez utiliser String.search avec une expression régulière:

var vowels = /[aeiou]/i; 
 

 
console.log('test'.search(vowels)); 
 
console.log('cherry'.search(vowels)); 
 
console.log('apricot'.search(vowels));


Vous pouvez l'intégrer dans votre code comme ceci:

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

Je suppose que ce n'est pas la version finale de la fonction et il y a encore une certaine logique à mettre en œuvre.

+1

Pourquoi est-ce downvoted ??? Je voulais juste insérer cette réponse aussi. – gus27

+0

C'est exactement ce que je cherchais, merci beaucoup w0lf !! – jesnicka

+1

Une réponse acceptée avec un -2 downvote - jamais vu cela avant. – gus27

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

+1

Ok, il semble y avoir un downvoter en série .... – Feathercrown