2016-11-14 10 views
-1

Ich verstehe, wie Sie das erste Vorkommen eines Zeichens in einer Zeichenfolge mit IndexOf() finden. Z.B.Den Index eines Zeichens finden - JavaScript

Str.indexOf("a"); 

Aber wie würde ich das erste Vorkommen eines beliebigen Zeichens aus einer Reihe von Zeichen finden?

mein Code:

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

Ich mag den Teil beim ersten Auftreten eines Vokals beenden. Gibt es eine einfache Methode, dies zu tun?

Vielen Dank im Voraus!

Antwort

0

können Sie verwenden String.search mit einem regex:

var vowels = /[aeiou]/i; 
 

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


Sie können es in Ihrem Code wie folgt integrieren:

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

Ich nehme an, dies nicht die endgültige Version der Funktion ist, und es gibt immer noch eine gewisse Logik implementiert werden.

+1

Warum ist das ??? downvoted Ich wollte diese Antwort auch nur einfügen. – gus27

+0

Dies ist genau das, was ich gesucht habe, vielen Dank w0lf! – jesnicka

+1

Eine akzeptierte Antwort mit einem -2 Downvote - noch nie zuvor gesehen. – 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 es scheint einen Serien-Downvoter zu geben .... – Feathercrown

Verwandte Themen