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

C#で文字列内の単語数をカウントする方法を解説

C#で文字列に含まれる単語の数をカウントするには、文字列を先頭から1文字ずつ走査し、空白・タブ・改行などの区切り文字を検出する方法が基本となります。ここでは、その具体的な実装手順とサンプルコードを紹介します。

1. 文字列の宣言

まず、カウント対象となる文字列を宣言します。

string str = "Hello World!";

2. 区切り文字の検出ロジック

次に、whileループを使って文字列全体を走査し、半角スペース(' ')、改行('\n')、タブ('\t')のいずれかが見つかるたびに単語数のカウンターを増やします。

while (a <= str.Length - 1) {
    if(str[a]==' ' || str[a]=='\n' || str[a]=='\t') {
        myWord++;
    }
    a++;
}

ポイントは、カウンター変数 myWord の初期値を「1」に設定している点です。単語数は区切り文字の数より必ず1つ多くなるためです。例えば「Hello World!」の場合、区切り文字(スペース)は1つですが、単語は2つ存在します。

サンプルコード(完全版)

C#で文字列内の単語数をカウントする完全なプログラムは以下の通りです。

using System;
public class Demo {
    public static void Main() {
        int a = 0 , myWord = 1;
        string str = "Hello World!";
        while (a <= str.Length - 1) {
            if(str[a]==' ' || str[a]=='\n' || str[a]=='\t') {
                myWord++;
            }
            a++;
        }
        Console.Write("Number of words in the string = {0}\n", myWord);
    }
}

実行結果

このプログラムを実行すると、以下のように単語数が出力されます。

Number of words in the string = 2

補足:連続した空白への対応

上記のコードは単純な実装のため、単語間に複数の空白が連続して含まれる場合(例:「Hello  World!」)、実際の単語数より多くカウントされる点に注意が必要です。より正確にカウントしたい場合は、str.Split(new char[]{' ', '\n', '\t'}, StringSplitOptions.RemoveEmptyEntries) を使って配列の長さを取得する方法も有効です。

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

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

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

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