स्ट्रिंग में स्वरों (vowels) और व्यंजनों (consonants) दोनों की गिनती के लिए हम प्रत्येक कैरेक्टर को जांचते हैं: क्या यह स्वर है? क्या यह अक्षर है लेकिन स्वर नहीं? (व्यंजन)।
उदाहरण
using System;
public class Demo {
public static void Main() {
string myStr = "Jack Sparrow";
int vowel_count = 0, cons_count = 0;
int len = myStr.Length;
for (int i = 0; i < len; i++) {
char c = myStr[i];
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' ||
c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U') {
vowel_count++;
}
else if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
cons_count++;
}
// स्पेस, अंक, प्रतीक नजरअंदाज किए जाते हैं
}
Console.Write("\nVowel in the string: {0}\n", vowel_count);
Console.Write("Consonant in the string: {0}\n\n", cons_count);
}
}
आउटपुट
Vowel in the string: 3 Consonant in the string: 8
बेहतर दृष्टिकोण: Char मेथड्स का उपयोग
foreach (char c in myStr) {
if (char.IsLetter(c)) {
char lower = char.ToLower(c);
if (lower == 'a' || lower == 'e' || lower == 'i' || lower == 'o' || lower == 'u')
vowel_count++;
else
cons_count++;
}
}
LINQ के साथ
using System.Linq; string vowels = "aeiouAEIOU"; int vowelCount = myStr.Count(c => vowels.Contains(c)); int consonantCount = myStr.Count(c => char.IsLetter(c) && !vowels.Contains(c));
यूनिकोड/अंतर्राष्ट्रीय वर्णमाला के लिए
// char.IsLetter यूनिकोड अक्षरों को पहचानता है // लेकिन स्वर/व्यंजन वर्गीकरण जटिल है // सरल दृष्टिकोण: लैटिन-आधारित भाषाओं के लिए सामान्यीकृत करें string normalized = myStr.Normalize(NormalizationForm.FormD); var baseChars = normalized.Where(c => char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark);
मुख्य बिंदु
- स्पेस, अंक, विराम चिह्न न तो स्वर हैं न व्यंजन।
char.IsLetterयूनिकोड अक्षरों के लिए काम करता है।- केस-इनसेंसिटिव जांच के लिए
char.ToLowerयाToUpperउपयोग करें। - 'y' को स्वर माना जाए या नहीं, आवश्यकताओं पर निर्भर करता है।