Counting vowels in javascript

前端 未结 5 1688
长情又很酷
长情又很酷 2021-01-24 12:41

I use this code to search and count vowels in the string,

a = \"run forest, run\";
a = a.split(\" \");
var syl = 0;
for (var i = 0; i < a.length - 1; i++) {
         


        
相关标签:
5条回答
  • 2021-01-24 13:08

    Try:

    a = "run forest, run";
    
    var syl = 0;
    
    for(var i=0; i<a.length; i++) {
            if('aouie'.search(a[i]) > -1){ 
                syl++;
            }
    }
    
    alert(syl+" vowels")
    

    First, the split is useless since you can already cycle through every character.

    Second: you need to use i<a.length, this gets the last character in the string, too.

    0 讨论(0)
  • 2021-01-24 13:14

    Regarding your code, your if condition needs no i2

    if('aouie'.search(a[i]) > -1){ 
    

    I wonder, why all that use of arrays and nested loops, the below regex could do it better,

    var str = "run forest, run";
    var matches = str.match(/[aeiou]/gi);
        var count = matches ? matches.length : 0;
        alert(count + " vowel(s)");
    

    Demo

    0 讨论(0)
  • 2021-01-24 13:15

    Try this:

    var syl = ("|"+a+"|").split(/[aeiou]/i).length-1;
    

    The | ensures there are no edge cases, such as having a vowel at the start or end of the string.

    0 讨论(0)
  • 2021-01-24 13:19

    The simplest way is

    s.match(/[aeiou]/gi).length
    
    0 讨论(0)
  • 2021-01-24 13:26

    You can use the .match to compare a string to a regular expression. g is global which will run through the entire string. i makes the string readable as upper and lower case.

    function getVowels(str) {
          var m = str.match(/[aeiou]/gi);
          return m === null ? 0 : m.length;
        }
    
    0 讨论(0)
提交回复
热议问题