カテゴリ: C# 更新日: 2025/10/29

C#で文字列の各文字にアクセスする方法(for・foreach)をわかりやすく解説!

C#で文字列の各文字にアクセスする方法(for・foreach)
C#で文字列の各文字にアクセスする方法(for・foreach)

先生と生徒の会話形式で理解しよう

生徒

「先生、C#で文字列の中の1文字ずつを取り出す方法ってありますか?」

先生

「もちろんありますよ。C#では、for文やforeach文を使って文字列の各文字にアクセスできます。」

生徒

「どちらも聞いたことありますけど、違いがよく分からないです。」

先生

「では、これからforforeachの違いや使い方を、サンプルコードで一緒に見ていきましょう。」

1. C#の文字列とは?

1. C#の文字列とは?
1. C#の文字列とは?

C#(シーシャープ)における文字列(string型)とは、文字を並べたデータのことです。例えば「Hello」や「こんにちは」といったテキストが文字列です。

文字列は、実は文字(char型)がいくつも並んでできています。そのため、文字列を「1文字ずつ」扱いたいときには、文字単位でアクセスする必要があります。ここで登場するのがfor文やforeach文です。

2. for文で文字列の各文字にアクセスする

2. for文で文字列の各文字にアクセスする
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文字ずつ処理する

3. foreach文で文字列を1文字ずつ処理する
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文の使い分け方

4. for文とforeach文の使い分け方
4. for文とforeach文の使い分け方

どちらも文字列の各文字にアクセスできますが、使い分けのポイントは以下の通りです。

  • for文: 文字の位置(インデックス)を使いたいとき
  • foreach文: 文字列を単純に順番に処理したいとき

例えば、「2番目の文字だけを取り出す」「文字の位置によって処理を変える」など、位置を意識した操作を行う場合はfor文が便利です。

一方、「全ての文字を表示する」「文字列を1文字ずつチェックする」だけなら、foreach文の方が簡潔です。

5. 実践:文字列を1文字ずつ加工して表示する

5. 実践:文字列を1文字ずつ加工して表示する
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. 文字列の各文字を別のデータに変換する応用例

6. 文字列の各文字を別のデータに変換する応用例
6. 文字列の各文字を別のデータに変換する応用例

例えば、文字列の各文字を「数字のリスト」や「新しい文字列」に変換することも可能です。for文を使って、すべての文字を並び替えたり、条件に応じて変換するような処理も行えます。


string text = "C#";
for (int i = 0; i < text.Length; i++)
{
    Console.WriteLine($"{i}番目の文字コード: {(int)text[i]}");
}

このコードでは、文字を文字コード(数値)として出力しています。C#では、文字も内部的には数値として扱われているため、数値との変換も簡単です。

こうした文字操作を理解しておくと、今後学ぶ「文字列の検索」や「置換」、「分割」などの操作にもスムーズに進むことができます。

カテゴリの一覧へ
新着記事
C#で複数ファイルをまとめて操作する方法(foreach・LINQ)をやさしく解説!
C#のインターフェースとは?クラス設計を柔軟にする基本技術
C#のコンストラクタの役割と使い方!オブジェクト初期化の基本
COBOLでデータベース接続を理解しよう!初心者でもわかる基本の考え方
人気記事
No.1
Java&Spring記事人気No1
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.3
Java&Spring記事人気No3
C#の数値型をマスターしよう!int・double・decimalの違いと使い方
No.4
Java&Spring記事人気No4
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法