基礎から学ぶC#入門 90日コース | C#基本文法 - Day 7:文字列操作

C# 90日で身につけるC#
スポンサーリンク
スポンサーリンク
  1. Day 7 のゴールと全体イメージ
  2. 文字列連結と文字列補間
    1. 文字列連結:+ でつなぐ基本パターン
    2. 文字列補間:$"" で読みやすく書く
  3. Length:文字列の長さを調べる
    1. 文字数を知ることでできること
  4. ToUpper() / ToLower():大文字・小文字の変換
    1. 英字の大文字・小文字を統一する
  5. Replace():一部の文字列を置き換える
    1. 特定の文字や単語を別のものに差し替える
  6. Contains():特定の文字列が含まれているか調べる
    1. 「この単語が入っている?」をチェックする
  7. Substring():一部だけ切り出す
    1. 「先頭から何文字」「途中から何文字」を取り出す
  8. Split():区切り文字で分割する
    1. カンマ区切りやスペース区切りの文字列を分解する
  9. 文字列操作の総合例:簡易プロフィール整形
    1. Day 7 の内容をまとめて使う
  10. Day 7 のまとめ
  11. Day 7 ミニ課題のゴール
  12. 文字数カウンターを日本語で設計する
    1. まずは「何をするプログラムか」を言葉で整理する
  13. ステップ1:Console.ReadLine() で文字列を入力してもらう
    1. ユーザーの文章をそのまま文字列として受け取る
  14. ステップ2:Length で文字数を数える
    1. 文字列の長さ(文字数)を取得する
  15. ステップ3:文字列補間で結果をわかりやすく表示する
    1. $"" を使ってメッセージを組み立てる
  16. ステップ4:ToUpper() / ToLower() で文字列を変換してみる
    1. 大文字・小文字の変換を体験する
  17. ステップ5:Contains() で特定の単語が含まれているか調べる
    1. 「この単語が入っている?」をチェックする
  18. ステップ6:Substring() で一部だけ切り出す
    1. 先頭から何文字かを取り出してみる
  19. ステップ7:Split() で単語ごとに分割して数える
    1. スペース区切りで「単語数」を数える
  20. ミニ課題:文字数カウンターの完成版
    1. Day 7 の学びを詰め込んだサンプルコード
  21. Day 7 ミニ課題のまとめ

Day 7 のゴールと全体イメージ

Day 7 では、C# の「文字列操作」を集中的に学びます。 文字列は、ユーザー名・メッセージ・ログ・入力データなど、ほぼすべてのアプリで登場する重要な要素です。

学ぶことは次のとおりです。

  • 文字列連結
  • 文字列補間($""
  • Length
  • ToUpper() / ToLower()
  • Replace()
  • Contains()
  • Substring()
  • Split()

これらをステップバイステップで確認しながら、「文字列を自在に扱う感覚」を育てていきます。

文字列連結と文字列補間

文字列連結:+ でつなぐ基本パターン

まずは、最も基本的な「文字列連結」から見ていきます。

using System;

class Program
{
    static void Main(string[] args)
    {
        string firstName = "Taro";
        string lastName = "Yamada";

        // 文字列連結(+ 演算子)
        string fullName = lastName + " " + firstName;

        Console.WriteLine("フルネーム:" + fullName);

        Console.ReadLine();
    }
}
C#

ポイント:

  • + 演算子で文字列どうしをつなぐことができます。
  • " " のようにスペースも文字列として扱われます。

ただし、複雑なメッセージを組み立てるときは、+ が増えて読みにくくなりがちです。 そこで登場するのが「文字列補間」です。

文字列補間:$"" で読みやすく書く

文字列補間は、$"..." の中に変数や式を直接埋め込める書き方です。

using System;

class Program
{
    static void Main(string[] args)
    {
        string firstName = "Taro";
        string lastName = "Yamada";
        int age = 25;

        // 文字列補間
        string message = $"名前:{lastName} {firstName}、年齢:{age} 歳";

        Console.WriteLine(message);

        Console.ReadLine();
    }
}
C#

重要ポイント:

  • 先頭の $ を忘れないようにすること。
  • {} の中には変数だけでなく、計算式も書けます(例:{age + 1})。
  • 可読性が高く、実務でもよく使われます。

Length:文字列の長さを調べる

文字数を知ることでできること

Length プロパティを使うと、文字列の「長さ(文字数)」を取得できます。

using System;

class Program
{
    static void Main(string[] args)
    {
        string text = "Hello World";

        int length = text.Length; // 文字数を取得

        Console.WriteLine($"文字列:{text}");
        Console.WriteLine($"文字数:{length}");

        Console.ReadLine();
    }
}
C#

ポイント:

  • Length は「プロパティ」であり、() は不要です。
  • 入力チェック(例:パスワードの長さ確認)などに使われます。

ToUpper() / ToLower():大文字・小文字の変換

英字の大文字・小文字を統一する

ToUpper()ToLower() は、文字列をすべて大文字・小文字に変換するメソッドです。

using System;

class Program
{
    static void Main(string[] args)
    {
        string text = "Hello World";

        string upper = text.ToUpper(); // 全て大文字に変換
        string lower = text.ToLower(); // 全て小文字に変換

        Console.WriteLine($"元の文字列:{text}");
        Console.WriteLine($"大文字:{upper}");
        Console.WriteLine($"小文字:{lower}");

        Console.ReadLine();
    }
}
C#

重要ポイント:

  • 元の文字列 text は変更されず、新しい文字列が返されます。
  • 大文字・小文字を区別しない比較をしたいときに、事前に統一しておくと便利です。

Replace():一部の文字列を置き換える

特定の文字や単語を別のものに差し替える

Replace() は、指定した文字列を別の文字列に置き換えるメソッドです。

using System;

class Program
{
    static void Main(string[] args)
    {
        string text = "C# は楽しい。C# をもっと学びたい。";

        // "C#" を "CSharp" に置き換える
        string replaced = text.Replace("C#", "CSharp");

        Console.WriteLine($"元の文字列:{text}");
        Console.WriteLine($"置き換え後:{replaced}");

        Console.ReadLine();
    }
}
C#

ポイント:

  • すべての "C#""CSharp" に置き換えられます。
  • 元の文字列は変更されず、新しい文字列が返されます。
  • 禁止ワードのマスクや、フォーマットの統一などに使われます。

Contains():特定の文字列が含まれているか調べる

「この単語が入っている?」をチェックする

Contains() は、文字列の中に特定の部分文字列が含まれているかどうかを調べるメソッドです。

using System;

class Program
{
    static void Main(string[] args)
    {
        string text = "C# は楽しいプログラミング言語です。";

        bool hasCSharp = text.Contains("C#");
        bool hasJava = text.Contains("Java");

        Console.WriteLine($"文字列:{text}");
        Console.WriteLine($"\"C#\" を含むか:{hasCSharp}");
        Console.WriteLine($"\"Java\" を含むか:{hasJava}");

        Console.ReadLine();
    }
}
C#

重要ポイント:

  • 戻り値は booltrue / false)です。
  • 検索機能やフィルタリングなどでよく使われます。

Substring():一部だけ切り出す

「先頭から何文字」「途中から何文字」を取り出す

Substring() は、文字列の一部を切り出すメソッドです。

基本形は次の 2 パターンです。

  • Substring(開始位置)
  • Substring(開始位置, 文字数)
using System;

class Program
{
    static void Main(string[] args)
    {
        string text = "Hello World";

        // 先頭から 5 文字("Hello")を取り出す
        string hello = text.Substring(0, 5);

        // 6文字目以降("World")を取り出す
        string world = text.Substring(6); // 6 文字目から最後まで

        Console.WriteLine($"元の文字列:{text}");
        Console.WriteLine($"先頭 5 文字:{hello}");
        Console.WriteLine($"6 文字目以降:{world}");

        Console.ReadLine();
    }
}
C#

重要ポイント:

  • 文字の位置は 0 から始まります(0 が先頭)。
  • 範囲外の位置や長さを指定すると例外が発生するため、Length と組み合わせて安全に使うことが大切です。

Split():区切り文字で分割する

カンマ区切りやスペース区切りの文字列を分解する

Split() は、指定した区切り文字で文字列を分割し、配列として返すメソッドです。

using System;

class Program
{
    static void Main(string[] args)
    {
        string csv = "Apple,Banana,Orange";

        // カンマで分割
        string[] items = csv.Split(',');

        Console.WriteLine("分割結果:");
        foreach (string item in items)
        {
            Console.WriteLine($"- {item}");
        }

        Console.ReadLine();
    }
}
C#

ポイント:

  • 戻り値は string[](文字列の配列)です。
  • CSV(カンマ区切り)やスペース区切りの入力を分解するときに便利です。

文字列操作の総合例:簡易プロフィール整形

Day 7 の内容をまとめて使う

最後に、Day 7 の文字列操作をまとめて使った例として、 ユーザーの入力を整形してプロフィール表示を行うプログラムを示します。

using System;

class Program
{
    static void Main(string[] args)
    {
        // 名前の入力
        Console.WriteLine("名前を入力してください(例:taro yamada):");
        string nameInput = Console.ReadLine();

        // スペースで分割して、姓と名に分ける
        string[] parts = nameInput.Split(' ');

        string firstName = "";
        string lastName = "";

        if (parts.Length >= 2)
        {
            firstName = parts[0];
            lastName = parts[1];
        }
        else
        {
            // 入力が想定どおりでない場合は、そのまま扱う
            firstName = nameInput;
        }

        // 大文字・小文字を整える(先頭だけ大文字にしたい場合は本来別処理が必要ですが、ここでは簡易的に ToUpper を使用)
        string firstNameUpper = firstName.ToUpper();
        string lastNameUpper = lastName.ToUpper();

        // メールアドレスの入力
        Console.WriteLine("メールアドレスを入力してください:");
        string email = Console.ReadLine();

        // メールアドレスに "@" が含まれているかチェック
        bool hasAt = email.Contains("@");

        // プロフィールメッセージを文字列補間で組み立てる
        string profile = $"名前:{lastNameUpper} {firstNameUpper}\nメール:{email}";

        Console.WriteLine();
        Console.WriteLine("=== プロフィール ===");
        Console.WriteLine(profile);

        // メールアドレスの簡易チェック結果
        if (!hasAt)
        {
            Console.WriteLine("注意:メールアドレスに '@' が含まれていません。");
        }

        Console.ReadLine();
    }
}
C#

このコードの中には、

  • 文字列連結・文字列補間:$"..."\n を使ったメッセージ組み立て
  • Split():スペース区切りで名前を分割
  • ToUpper():大文字への変換
  • Contains():メールアドレスの簡易チェック

など、Day 7 の要素がバランスよく含まれています。

Day 7 のまとめ

Day 7 では、C# の文字列操作として、

  • 文字列連結:+ でつなぐ
  • 文字列補間:$"..." で読みやすく書く
  • Length:文字数を調べる
  • ToUpper() / ToLower():大文字・小文字を統一する
  • Replace():特定の文字列を置き換える
  • Contains():特定の文字列が含まれているか調べる
  • Substring():一部だけ切り出す
  • Split():区切り文字で分割する

を、具体的なコードとともに確認しました。

文字列操作は、

  • ユーザー入力の整形
  • メッセージやログの生成
  • データの分解・加工

など、あらゆる場面で登場します。

ぜひ、

  • 自分で文字列を変えながら、各メソッドの結果を確認する
  • 日本語の文章や CSV 形式の文字列を使って SplitReplace を試してみる
  • 文字列補間で「読みやすいメッセージ」を意識して書いてみる

といった練習を通して、「文字列を道具として自在に扱う」感覚を育てていってください。


Day 7 ミニ課題のゴール

Day 7 のミニ課題では、「文字数カウンター」を題材にして、文字列操作の基本を一通り体験していきます。 ユーザーに文章を入力してもらい、その文字数を数えたり、文字列を少し加工したりしながら、

  • 文字列連結
  • 文字列補間($""
  • Length
  • ToUpper() / ToLower()
  • Replace()
  • Contains()
  • Substring()
  • Split()

といったメソッドや機能を、実際のコードの中で使っていきます。

文字数カウンターを日本語で設計する

まずは「何をするプログラムか」を言葉で整理する

文字数カウンターの基本的な流れを、日本語で整理すると次のようになります。

  1. ユーザーに、任意の文章(文字列)を入力してもらう
  2. 入力された文字列の「文字数」を数える
  3. 結果を画面に表示する
  4. ついでに、
    • 大文字・小文字の変換
    • 特定の単語が含まれているかのチェック
    • 一部だけ切り出す
    • 単語ごとに分割する なども試してみる

この「日本語の設計」を、そのまま C# のコードに落とし込んでいきます。

ステップ1:Console.ReadLine() で文字列を入力してもらう

ユーザーの文章をそのまま文字列として受け取る

まずは、コンソールから文章を入力してもらいます。

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("文字数を数えたい文章を入力してください:");

        // ユーザーが入力した 1 行分の文字列を受け取ります
        string text = Console.ReadLine();

        Console.WriteLine($"入力された文章:{text}");

        Console.ReadLine(); // 画面がすぐ閉じないように待機
    }
}
C#

ここではまだ「入力して表示するだけ」ですが、 次のステップで文字数を数えていきます。

ステップ2:Length で文字数を数える

文字列の長さ(文字数)を取得する

Length プロパティを使うと、文字列の「文字数」を取得できます。

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("文字数を数えたい文章を入力してください:");
        string text = Console.ReadLine();

        // Length プロパティで文字数を取得します
        int length = text.Length;

        Console.WriteLine($"入力された文章:{text}");
        Console.WriteLine($"文字数:{length} 文字");

        Console.ReadLine();
    }
}
C#

重要ポイント:

  • Length は「プロパティ」であり、() は不要です。
  • 空文字列(何も入力しないで Enter)なら、Length0 になります。

文字数カウンターの「核」となるのが、この Length です。

ステップ3:文字列補間で結果をわかりやすく表示する

$"" を使ってメッセージを組み立てる

文字列補間を使うと、結果表示が読みやすくなります。

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("文字数を数えたい文章を入力してください:");
        string text = Console.ReadLine();

        int length = text.Length;

        // 文字列補間でメッセージを組み立てます
        string message = $"入力された文章は「{text}」で、文字数は {length} 文字です。";

        Console.WriteLine(message);

        Console.ReadLine();
    }
}
C#

ポイント:

  • $"..." の中に {text}{length} を埋め込むことで、 「何を表示しているか」が一目で分かるコードになります。

ステップ4:ToUpper() / ToLower() で文字列を変換してみる

大文字・小文字の変換を体験する

文字数カウンターに、文字列の変換機能を少し足してみます。

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("文字数を数えたい文章を入力してください:");
        string text = Console.ReadLine();

        int length = text.Length;

        // 大文字・小文字への変換
        string upper = text.ToUpper(); // 全て大文字に変換
        string lower = text.ToLower(); // 全て小文字に変換

        Console.WriteLine("=== 文字数カウンター ===");
        Console.WriteLine($"元の文章:{text}");
        Console.WriteLine($"文字数:{length} 文字");
        Console.WriteLine($"大文字版:{upper}");
        Console.WriteLine($"小文字版:{lower}");

        Console.ReadLine();
    }
}
C#

重要ポイント:

  • 元の文字列 text は変更されず、新しい文字列が返されます。
  • 英字を扱う場面で、大文字・小文字を統一したいときに便利です。

ステップ5:Contains() で特定の単語が含まれているか調べる

「この単語が入っている?」をチェックする

文字数カウンターに、「特定の単語が含まれているか」をチェックする機能を追加してみます。

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("文字数を数えたい文章を入力してください:");
        string text = Console.ReadLine();

        int length = text.Length;

        Console.WriteLine("検索したい単語を入力してください:");
        string keyword = Console.ReadLine();

        // Contains で keyword が含まれているかを調べます
        bool containsKeyword = text.Contains(keyword);

        Console.WriteLine("=== 文字数カウンター ===");
        Console.WriteLine($"文章:{text}");
        Console.WriteLine($"文字数:{length} 文字");
        Console.WriteLine($"検索キーワード:{keyword}");
        Console.WriteLine($"キーワードを含むか:{containsKeyword}");

        Console.ReadLine();
    }
}
C#

重要ポイント:

  • Contains の戻り値は booltrue / false)です。
  • 大文字・小文字を区別しない検索をしたい場合は、 事前に ToLower() などで統一してから Contains を使うとよいです。

ステップ6:Substring() で一部だけ切り出す

先頭から何文字かを取り出してみる

文字数カウンターに、「先頭の一部だけを表示する」機能を追加してみます。

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("文字数を数えたい文章を入力してください:");
        string text = Console.ReadLine();

        int length = text.Length;

        // 先頭 5 文字だけを取り出してみる(短い場合はそのまま)
        string head;

        if (length >= 5)
        {
            head = text.Substring(0, 5); // 0 文字目から 5 文字分
        }
        else
        {
            head = text; // 5 文字未満なら全文
        }

        Console.WriteLine("=== 文字数カウンター ===");
        Console.WriteLine($"文章:{text}");
        Console.WriteLine($"文字数:{length} 文字");
        Console.WriteLine($"先頭 5 文字(または全文):{head}");

        Console.ReadLine();
    }
}
C#

重要ポイント:

  • 文字の位置は 0 から始まります(0 が先頭)。
  • 範囲外の位置や長さを指定すると例外が発生するため、Length と組み合わせて安全に使うことが大切です。

ステップ7:Split() で単語ごとに分割して数える

スペース区切りで「単語数」を数える

文字数だけでなく、「単語数」も数えてみると、文字列操作の理解が深まります。

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("文字数を数えたい文章を入力してください(単語はスペース区切り):");
        string text = Console.ReadLine();

        int length = text.Length;

        // スペースで分割して単語の配列を作ります
        string[] words = text.Split(' ', StringSplitOptions.RemoveEmptyEntries);
        int wordCount = words.Length;

        Console.WriteLine("=== 文字数カウンター ===");
        Console.WriteLine($"文章:{text}");
        Console.WriteLine($"文字数:{length} 文字");
        Console.WriteLine($"単語数:{wordCount} 個");

        Console.WriteLine("単語一覧:");
        foreach (string word in words)
        {
            Console.WriteLine($"- {word}");
        }

        Console.ReadLine();
    }
}
C#

重要ポイント:

  • Split(' ') でスペース区切りの文字列を分割できます。
  • StringSplitOptions.RemoveEmptyEntries を指定すると、連続スペースによる空要素を除外できます。

ミニ課題:文字数カウンターの完成版

Day 7 の学びを詰め込んだサンプルコード

最後に、Day 7 の文字列操作をバランスよく盛り込んだ「文字数カウンター」の完成版例を示します。

using System;

class Program
{
    static void Main(string[] args)
    {
        // 文章の入力
        Console.WriteLine("文字数を数えたい文章を入力してください:");
        string text = Console.ReadLine();

        // 文字数
        int length = text.Length;

        // 大文字・小文字変換
        string upper = text.ToUpper();
        string lower = text.ToLower();

        // 特定の単語の検索
        Console.WriteLine("検索したい単語を入力してください:");
        string keyword = Console.ReadLine();
        bool containsKeyword = text.Contains(keyword);

        // 先頭 5 文字の切り出し
        string head = (length >= 5) ? text.Substring(0, 5) : text;

        // スペース区切りで単語に分割
        string[] words = text.Split(' ', StringSplitOptions.RemoveEmptyEntries);
        int wordCount = words.Length;

        // 文字列補間で結果をまとめて表示
        Console.WriteLine();
        Console.WriteLine("=== 文字数カウンター ===");
        Console.WriteLine($"文章:{text}");
        Console.WriteLine($"文字数:{length} 文字");
        Console.WriteLine($"大文字版:{upper}");
        Console.WriteLine($"小文字版:{lower}");
        Console.WriteLine($"検索キーワード:{keyword}");
        Console.WriteLine($"キーワードを含むか:{containsKeyword}");
        Console.WriteLine($"先頭 5 文字(または全文):{head}");
        Console.WriteLine($"単語数:{wordCount} 個");

        Console.WriteLine("単語一覧:");
        foreach (string word in words)
        {
            Console.WriteLine($"- {word}");
        }

        Console.ReadLine();
    }
}
C#

このコードの中には、

  • 文字列連結:"文字数:" + length + " 文字" のような形(補間と併用可能)
  • 文字列補間:$"文章:{text}" など
  • Length:文字数の取得
  • ToUpper() / ToLower():文字列の変換
  • Contains():キーワード検索
  • Substring():一部の切り出し
  • Split():単語ごとの分割

といった Day 7 の学習項目がすべて登場しています。

Day 7 ミニ課題のまとめ

文字数カウンターを通して、

  • 文字列の長さを数える(Length
  • 文字列補間で分かりやすく結果を表示する($"..."
  • 大文字・小文字を変換する(ToUpper / ToLower
  • 特定の単語が含まれているか調べる(Contains
  • 一部だけ切り出す(Substring
  • 区切り文字で分割して単語数を数える(Split

という一連の流れを体験しました。

文字列操作は、ユーザー入力・ログ・メッセージ・データ処理など、あらゆる場面で登場します。 ぜひ、

  • 入力する文章を変えながら、各メソッドの結果の違いを確認する
  • キーワード検索や単語分割を応用して、簡易検索ツールやテキスト解析もどきを作ってみる
  • 文字列補間で「読みやすい表示」を意識してメッセージを組み立ててみる

といったアレンジをしながら、「文字列を自在に扱う感覚」を育てていってください。

タイトルとURLをコピーしました