0Pricing
C# Academy · レッスン

文字列を反復処理する

文字列を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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. char型
  2. Charヘルパーメソッド
  3. 文字列を反復処理する
  4. 文字列を構築する
← C# Academyに戻る