C#で指定した文字列内の単語数をカウントするプログラムの書き方
文字列内の単語数をカウントする基本の考え方
C#では、文字列に含まれる単語の数を数えるために、文字列を先頭から1文字ずつ走査し、区切り文字(スペース・改行・タブ)が見つかるたびにカウントを増やすという手法が使えます。
例として、次の文字列に含まれる単語数を数えてみましょう。
str1 = "Hello World!";
この場合、文字列の長さ分だけループ処理を行い、スペース(" ")、改行(\n)、タブ(\t)のいずれかが見つかったタイミングでカウント変数をインクリメントします。
if(str1[a]==' ' || str1[a]=='\n' || str1[a]=='\t') {
count++;
}サンプルコード
以下のコードを実行すると、指定した文字列内の単語数をカウントできます。
using System;
public class Demo {
public static void Main() {
string str1;
int a, count;
str1 = "Hello World!";
a = 0;
count = 1;
while (a <= str1.Length - 1) {
if(str1[a]==' ' || str1[a]=='\n' || str1[a]=='\t') {
count++;
}
a++;
}
Console.Write("Total words= {0}\n", count);
}
}ポイント解説
- count = 1 で初期化: 最初の単語はすでに存在しているため、カウントは「1」から始めます。
- whileループ: 文字列の長さ(str1.Length)までインデックス a を進めながら、1文字ずつ判定していきます。
- 区切り文字の判定: スペース・改行・タブのいずれかに一致した場合のみ count を増やします。
実行結果
Total words= 2
このように、シンプルなループ処理と条件分岐を組み合わせるだけで、文字列内の単語数を簡単にカウントすることができます。より複雑なテキスト解析が必要な場合は、正規表現(Regexクラス)や Split メソッドを使う方法も検討するとよいでしょう。
-
C言語で文字列の指定位置からn文字を削除するプログラム
問題 与えられた文字列の指定した位置からn文字を削除するユーザー定義関数を作成します。ここで、文字列は実行時にユーザーによって入力されるものとします。 解決策 文字列からn文字を削除するには、以下に示す手順に従って処理を行います。 アルゴリズム 文字列からn文字を削除するためのアルゴリズムは以下の通りです。 ステップ1 − 処理を開始する ステップ2 − 実行時に文字列を読み込む ステップ3 − 削除を開始する位置を読み込む ステップ4 − その位置から削除する文字数nを読み込む ステップ5 − 関数 deletestr(str,p,n) を呼び出し、ステップ7へ進む ステップ6 − 処理を
-
数値を英語の単語に変換するCプログラムの書き方
数値で構成された文字列が与えられたとき、その数値を英語の単語(スペル表記)へ変換するのが本記事の課題です。例えば、入力が「361」であれば、出力は「Three hundred sixty one」となるようにします。この問題を解くためには、一の位・十の位・百の位・千の位など、それぞれの数字がどの桁に位置しているのかを意識することが重要です。なお、今回紹介するコードは最大4桁、つまり0から9999までの数値に対応しています。したがって、入力は0〜9999の範囲である必要があります。例として「1,111」を考えてみましょう。各桁は以下のように対応します。千の位:1(one thousand)百の位