C# Count Vowels

后端 未结 17 1565
小鲜肉
小鲜肉 2020-12-03 08:59

I am learning to program C# and I am trying to count the vowels. I am getting the program to loop through the sentence, but instead of returning vowel count, it is just retu

相关标签:
17条回答
  • 2020-12-03 09:28

    Right now, you're checking whether the sentence as a whole contains any vowels, once for each character. You need to instead check the individual characters.

       for (int i = 0; i < sentence.Length; i++)
        {
            if (sentence[i]  == 'a' || sentence[i] == 'e' || sentence[i] == 'i' || sentence[i] == 'o' || sentence[i] == 'u')
            {
                total++;
            }
        }
    

    That being said, you can simplify this quite a bit:

    static void Main()
    {
        int total = 0;
        // Build a list of vowels up front:
        var vowels = new HashSet<char> { 'a', 'e', 'i', 'o', 'u' };
    
        Console.WriteLine("Enter a Sentence");
        string sentence = Console.ReadLine().ToLower();
    
        for (int i = 0; i < sentence.Length; i++)
        {
            if (vowels.Contains(sentence[i]))
            {
                total++;
            }
        }
        Console.WriteLine("Your total number of vowels is: {0}", total);
    
        Console.ReadLine();
    }
    

    You can simplify it further if you want to use LINQ:

    static void Main()
    {
        // Build a list of vowels up front:
        var vowels = new HashSet<char> { 'a', 'e', 'i', 'o', 'u' };
    
        Console.WriteLine("Enter a Sentence");
        string sentence = Console.ReadLine().ToLower();
    
        int total = sentence.Count(c => vowels.Contains(c));
        Console.WriteLine("Your total number of vowels is: {0}", total);
        Console.ReadLine();
    }
    
    0 讨论(0)
  • 2020-12-03 09:31

    Or with linq.

    static void Main()
        {
            int total = 0;
    
            Console.WriteLine("Enter a Sentence");
            string sentence = Console.ReadLine().ToLower();
            char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
    
            total = sentence.Count(x => vowels.Contains(x));
    
            Console.WriteLine("Your total number of vowels is: {0}", total);
    
            Console.ReadLine();
        }
    
    0 讨论(0)
  • 2020-12-03 09:32
        static void Main(string[] args)
        {
            Char[] ch;
            Console.WriteLine("Create a sentence");
            String letters = Console.ReadLine().Replace(" ", "").ToUpper();
            ch = letters.ToCharArray();
            int vowelCounter = 0;
            int consonantCounter = 0;
    
           for(int x = 0; x < letters.Length; x++)
            {
                if(ch[x].ToString().Equals("A") || ch[x].ToString().Equals("E") || ch[x].ToString().Equals("I") || ch[x].ToString().Equals("O") || ch[x].ToString().Equals("U"))
                {
                    vowelCounter++;
                }
                else
                {
                    consonantCounter ++;
                }
            }
            System.Console.WriteLine("Vowels counted : " + vowelCounter);
            System.Console.WriteLine("Consonants counted : " + consonantCounter);
    
    0 讨论(0)
  • 2020-12-03 09:33

    You can also do this with switch statement

            var total = 0;
            var sentence = "Hello, I'm Chris";
            foreach (char c in sentence.ToLower())
            {
                switch (c)
                {
                    case 'a':
                    case 'e':
                    case 'i':
                    case 'o':
                    case 'u':
                        total++;
                        break;
                    default: continue;
                }
    
            }
            Console.WriteLine(total.ToString());
    
    0 讨论(0)
  • 2020-12-03 09:34
    int cnt = 0;
    for (char c in sentence.ToLower())
        if ("aeiou".Contains(c))
           cnt++;
    return cnt;
    
    0 讨论(0)
  • 2020-12-03 09:36

    We can use regular expression to match vowels in a sentence.

    Regex.Matches() function will return an array with all occurrence of vowel. Then we can use the count property to find the count of vowels.

    Regular expression to match vowels in a string: [aeiouAEIOU]+

    Below is the working code snippet:

     public static void Main()
       {
           string pattern = @"[aeiouAEIOU]+";
           Regex rgx = new Regex(pattern);
           string sentence = "Who writes these notes?";
           Console.WriteLine(rgx.Matches(sentence).Count);
       }
    
    0 讨论(0)
提交回复
热议问题