C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#で文字列内の母音と子音の数を数える方法【初心者向け解説】

C#で文字列に含まれる母音(vowel)と子音(consonant)の数をカウントする方法を解説します。文字列を1文字ずつ走査し、それぞれの文字が母音か子音かを判定して集計します。

実装のポイント

判定の際には、大文字と小文字の両方をチェックする必要がある点に注意してください。たとえば「a」と「A」はどちらも母音として扱います。チェック漏れがあると、正しいカウント結果が得られません。

母音のカウント方法

母音を数えるには、「aeiou」およびその大文字「AEIOU」の10種類の文字と一致するかどうかを個別に判定します。

if (myStr[i] == 'a' || myStr[i] == 'e' || myStr[i] == 'i' || myStr[i] == 'o' || myStr[i] == 'u' || myStr[i] == 'A' || myStr[i] == 'E' || myStr[i] == 'I' || myStr[i] == 'O' || myStr[i] == 'U') {
    vowel_count++;
}

子音のカウント方法

子音は、else if文を使って「母音以外のアルファベット文字」であるかを判定します。具体的には、小文字の 'a'〜'z'、または大文字の 'A'〜'Z' の範囲内にあるかどうかを確認します。

else if ((myStr[i] >= 'a' && myStr[i] <= 'z') || (myStr[i] >= 'A' && myStr[i] <= 'Z')) {
    cons_count++;
}

この条件により、スペースや数字、記号などは自動的に除外され、純粋なアルファベットの子音だけがカウントされます。

完全なサンプルコード

以下は、文字列「Jack Sparrow」に含まれる母音と子音の数をカウントするC#プログラムの完全な例です。

using System;
public class Demo {
    public static void Main() {
        string myStr;
        int i, len, vowel_count, cons_count;
        myStr = "Jack Sparrow";
        vowel_count = 0;
        cons_count = 0;
        // 文字列の長さを取得
        len = myStr.Length;
        for(i=0; i<len; i++) {
            if(myStr[i]=='a' || myStr[i]=='e' || myStr[i]=='i' || myStr[i]=='o' || myStr[i]=='u' || myStr[i]=='A' || myStr[i]=='E' || myStr[i]=='I' || myStr[i]=='O' || myStr[i]=='U') {
                vowel_count++;
            } else if((myStr[i]>='a' && myStr[i]<='z') || (myStr[i]>='A' && myStr[i]<='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

処理の流れを解説

このプログラムでは、まず myStr.Length プロパティで文字列の長さを取得し、forループで各文字にアクセスしています。「Jack Sparrow」の場合、スペースはどちらの条件にも当てはまらないため無視され、結果として母音が3個(a、a、o)、子音が8個(J、c、k、S、p、r、r、w)とカウントされます。

より簡潔に書くには

大文字・小文字の区別をなくしたい場合は、char.ToLower() メソッドを使って文字を小文字に統一すると、条件式を半分に減らすことができます。

char c = char.ToLower(myStr[i]);
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
    vowel_count++;
} else if (c >= 'a' && c <= 'z') {
    cons_count++;
}

また、"aeiou".IndexOf(c) >= 0 のように文字列検索を利用する方法や、LINQの Count メソッドを活用する方法もあります。用途に応じて読みやすい実装を選択しましょう。

  1. セットを使って文字列内の母音の数をカウントするPythonプログラム

    本記事では、Pythonを使って文字列内に含まれる母音の数をカウントする方法について解説します。セット(set)を活用した効率的な実装を中心に、初心者の方にもわかりやすく説明していきます。 問題の概要 問題文:任意の文字列が与えられたとき、その文字列に含まれる母音の数をセットを使って数えます。 基本的なアプローチとしては、文字列全体を先頭から順に走査し、各文字が母音であるかどうかを判定します。母音であればカウントを1ずつ増やしていき、最終的な合計を出力します。 実装例 def vowel_count(str_): count = 0 # 母音をセットとして定義 vowe

  2. Pythonのsetを使って文字列内の母音の数をカウントする方法

    この記事では、ユーザーが入力した文字列に含まれる母音の数をカウントするPythonプログラムを紹介します。母音の判定にはset(セット)を使用します。setとは、順序を持たないコレクション型のデータ構造です。反復処理が可能で、要素の追加や削除による変更もできますが、重複した要素は保持されません。さらに、setは内部的にハッシュテーブルで実装されているため、特定の要素が含まれているかどうかの判定(in演算子)を高速に行えるという大きな特徴があります。実行例 入力 : str1 = pythonprogram 出力 : 3 アルゴリズム ステップ1: 母音を数えるためのカウンター変数を用意します。