Đếm riêng số nguyên âm (vowel: a,e,i,o,u) và phụ âm (consonant: các chữ cái còn lại) trong chuỗi, không phân biệt hoa/thường, bỏ qua số/dấu cách/ký tự đặc biệt.
Mã nguồn
using System;
public class Demo {
public static void Main() {
string myStr = "Jack Sparrow";
int vowelCount = 0, consonantCount = 0;
int len = myStr.Length;
for (int i = 0; i < len; i++) {
char c = myStr[i];
char lower = char.ToLower(c);
if (lower == 'a' || lower == 'e' || lower == 'i' || lower == 'o' || lower == 'u') {
vowelCount++;
} else if (char.IsLetter(c)) { // Là chữ cái nhưng không phải nguyên âm
consonantCount++;
}
// Bỏ qua: số, khoảng trắng, dấu câu...
}
Console.WriteLine("Nguyên âm: {0}", vowelCount);
Console.WriteLine("Phụ âm: {0}", consonantCount);
}
}
Kết quả
Nguyên âm: 3
Phụ âm: 8
(Jack Sparrow: a, a, o = 3 nguyên âm; J,c,k, S,p,r,r,w = 8 phụ âm; khoảng trắng bỏ qua)
Cách LINQ gọn nhẹ
using System.Linq;
string s = "Jack Sparrow".ToLower();
int vowels = s.Count(c => "aeiou".Contains(c));
int consonants = s.Count(c => char.IsLetter(c) && !"aeiou".Contains(c));
Lưu ý
- Code gốc dùng điều kiện
(c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')— chỉ ASCII. Dùngchar.IsLetter(c)hỗ trợ Unicode (tiếng Việt, tiếng Pháp...). - "y" được coi là nguyên âm hay phụ âm tùy ngôn ngữ/quy ước — code trên coi là phụ âm.
- Khoảng trắng, số, dấu câu không đếm vào cả hai nhóm.