文字列を反復処理する
文字列をcharの並びとして扱います。
「文字列を反復処理する」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全4レッスンが含まれています。
文字列はシーケンス
string は、順番に並んだ char 値のシーケンスです。
つまり、文字列をループして、1 回に 1 文字ずつ調べることができます。テキスト内の文字を調べたり、数えたり、変換したりするには、反復処理を使います。
string text = "Hello";
// 'H', 'e', 'l', 'l', 'o'Length プロパティ
すべての string には、その中に含まれる文字数を示す Length プロパティがあります。
Length は、ループを制御したり、最後の有効なインデックスを確認したりするために使います。最後の有効なインデックスは常に Length - 1 です。
class Program
{
static void Main()
{
string text = "Hello";
System.Console.WriteLine(text.Length);
}
}foreach によるループ
各文字を調べる最も簡単な方法は、foreach ループを使うことです。
インデックスを必要とせず、反復ごとに 1 つの char を取得できます。位置を知る必要がない場合に最もすっきり書ける方法です。
class Program
{
static void Main()
{
string text = "Hi!";
foreach (char c in text)
System.Console.WriteLine(c);
}
}for とインデックスによるループ
for ループではインデックスを取得できるため、位置が重要な場合に使います。
インデックスを 0 から Length - 1 まで動かし、text[i] で各文字を読み取ります。
class Program
{
static void Main()
{
string text = "Hi!";
for (int i = 0; i < text.Length; i++)
System.Console.WriteLine(text[i]);
}
}インデックスは 0 から始まる
文字には 0 から番号が付けられるため、最初の文字のインデックスは 0 です。
"Code" の場合、text[0] は 'C'、text[3] は 'e' です。大きすぎるインデックスを読み取ると、エラーが発生します。
string text = "Code";
char first = text[0]; // 'C'
char last = text[3]; // 'e'特定の文字を数える
反復処理を使うと、条件に一致する文字を数えられます。
このプログラムは、各文字を小さな集合と照合して、単語に含まれる母音の数を数えます。
class Program
{
static void Main()
{
string text = "banana";
int count = 0;
foreach (char c in text)
if (c == 'a') count++;
System.Console.WriteLine(count);
}
}char ヘルパーとの組み合わせ
ループの中では、先ほど学んだ char のヘルパーを呼び出せます。
たとえば、各文字に対して char.IsDigit でテストすることで、文字列に含まれる数字だけを数えられます。
class Program
{
static void Main()
{
string text = "a1b2c3";
int digits = 0;
foreach (char c in text)
if (char.IsDigit(c)) digits++;
System.Console.WriteLine(digits);
}
}変換結果を作成する
反復処理を行いながら、新しい結果を集めることができます。
このループは各文字を読み取り、char.ToUpper で大文字に変換して出力します。文字列は不変であるため、元の文字列が変更されることはありません。
class Program
{
static void Main()
{
string text = "loud";
foreach (char c in text)
System.Console.Write(char.ToUpper(c));
}
}文字列は不変
text[0] = 'X' のように、文字をその場で変更することはできません。これはコンパイルエラーになります。
文字列は不変であり、その文字が変更されることはありません。異なるテキストを得るには、古い文字列を編集するのではなく、新しい文字列を作成します。
string text = "cat";
// text[0] = 'b'; // not allowed反復処理で逆順にする
最後のインデックスから 0 まで反復処理すれば、文字を逆順に出力できます。
インデックスを Length - 1 から始め、0 に達するまで減らします。
class Program
{
static void Main()
{
string text = "abc";
for (int i = text.Length - 1; i >= 0; i--)
System.Console.Write(text[i]);
}
}foreach と for の使い分け
各文字だけが必要で、位置が必要ない場合は foreach を使います。
インデックスが必要な場合、文字を飛ばしたい場合、または逆順のように独自の順序でループしたい場合は、for ループを使います。どちらも同じ文字を調べられます。
クイックチェック
文字列の反復処理について理解度を確認しましょう。
まとめ
string は、ループで処理できる文字のシーケンスです。
単純な反復処理には foreach を使い、位置が重要な場合はインデックス付きの for ループを使います。Length プロパティで文字数を取得でき、インデックスは 0 から始まります。また、文字列は不変であるため、テキストを変換すると必ず新しい文字列が作成されます。
よくある質問
「文字列を反復処理する」レッスンは無料ですか?
はい。「文字列を反復処理する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全4レッスンが含まれています。
「文字列を反復処理する」で何を学びますか?
文字列をcharの並びとして扱います。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C# Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「文字列を反復処理する」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC# Academyレッスンでコードを書いて実行できますか?
はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- char型
- Charヘルパーメソッド
- 文字列を反復処理する
- 文字列を構築する