C#で文字列の各文字にアクセスする方法(for・foreach)をわかりやすく解説!
生徒
「先生、C#で文字列の中の1文字ずつを取り出す方法ってありますか?」
先生
「もちろんありますよ。C#では、for文やforeach文を使って文字列の各文字にアクセスできます。」
生徒
「どちらも聞いたことありますけど、違いがよく分からないです。」
先生
「では、これからforとforeachの違いや使い方を、サンプルコードで一緒に見ていきましょう。」
1. C#の文字列とは?
C#(シーシャープ)における文字列(string型)とは、文字を並べたデータのことです。例えば「Hello」や「こんにちは」といったテキストが文字列です。
文字列は、実は文字(char型)がいくつも並んでできています。そのため、文字列を「1文字ずつ」扱いたいときには、文字単位でアクセスする必要があります。ここで登場するのがfor文やforeach文です。
2. for文で文字列の各文字にアクセスする
for文は、回数を決めて繰り返し処理を行うための構文です。C#の文字列では、インデックス(0から始まる番号)を使って1文字ずつアクセスできます。
まずはサンプルコードを見てみましょう。
string text = "CSharp";
for (int i = 0; i < text.Length; i++)
{
Console.WriteLine($"文字{i + 1}: {text[i]}");
}
このプログラムを実行すると、次のような結果が出力されます。
文字1: C
文字2: S
文字3: h
文字4: a
文字5: r
文字6: p
text[i]の部分が「文字列のi番目の文字」を表しています。ここで使われているLengthプロパティは、「文字列の長さ(文字数)」を取得するためのものです。
for文は「文字の順番(インデックス)」を扱いたいときに便利です。例えば、「偶数番目の文字だけ表示したい」といった条件付きの操作も簡単に行えます。
3. foreach文で文字列を1文字ずつ処理する
foreach文は、配列や文字列のように「複数の要素をまとめて持つデータ」を1つずつ取り出すための構文です。for文のようにインデックスを意識しなくても、自動的に1文字ずつ処理してくれます。
string text = "CSharp";
foreach (char c in text)
{
Console.WriteLine(c);
}
実行結果は次の通りです。
C
S
h
a
r
p
ここで、char cは「文字列から1文字取り出した文字」を受け取る変数です。foreach文を使うことで、シンプルに「文字列を1文字ずつ処理」できます。
for文との違いは、インデックス番号を使わない点です。そのため、シンプルに読みやすいコードが書けます。
4. for文とforeach文の使い分け方
どちらも文字列の各文字にアクセスできますが、使い分けのポイントは以下の通りです。
- for文: 文字の位置(インデックス)を使いたいとき
- foreach文: 文字列を単純に順番に処理したいとき
例えば、「2番目の文字だけを取り出す」「文字の位置によって処理を変える」など、位置を意識した操作を行う場合はfor文が便利です。
一方、「全ての文字を表示する」「文字列を1文字ずつチェックする」だけなら、foreach文の方が簡潔です。
5. 実践:文字列を1文字ずつ加工して表示する
次に、実践的な例として「文字列を1文字ずつ大文字に変換して表示する」プログラムを作ってみましょう。
string text = "hello";
foreach (char c in text)
{
Console.WriteLine(char.ToUpper(c));
}
出力結果は次のようになります。
H
E
L
L
O
char.ToUpper()は、文字を大文字に変換するメソッドです。このように、foreach文で1文字ずつ取り出しながら加工することで、文字列の細かい操作が可能になります。
6. 文字列の各文字を別のデータに変換する応用例
例えば、文字列の各文字を「数字のリスト」や「新しい文字列」に変換することも可能です。for文を使って、すべての文字を並び替えたり、条件に応じて変換するような処理も行えます。
string text = "C#";
for (int i = 0; i < text.Length; i++)
{
Console.WriteLine($"{i}番目の文字コード: {(int)text[i]}");
}
このコードでは、文字を文字コード(数値)として出力しています。C#では、文字も内部的には数値として扱われているため、数値との変換も簡単です。
こうした文字操作を理解しておくと、今後学ぶ「文字列の検索」や「置換」、「分割」などの操作にもスムーズに進むことができます。