C# | ゼロからはじめるプログラミング、30日で基礎を学ぶC#:基本機能を身に付ける - Day9:文字列操作

C# 30日で身につけるC#
スポンサーリンク
スポンサーリンク

Day9 後半のゴール

Day9 後半では、前半で学んだ Length / Substring / Split / Replace / Trim / ToUpper / ToLower / StringBuilder を実際のプログラムに組み込みながら、 文字列操作が「実務レベルでどう役立つのか」を体験していただきます。

扱う題材は次の二つです。

CSVデータの分割 パスワード強度チェック

どちらも現場で頻繁に使われる処理であり、 文字列操作の理解が一気に深まる内容になっています。

CSVデータの分割を作る

CSVとは何か

CSV(Comma Separated Values)は、 「カンマ区切りでデータを並べた形式」です。

例:

Taro,20,Tokyo

これを Split で分割すると、 名前・年齢・住所をそれぞれ取り出せます。

Split を使った CSV 分割の基本形

string csv = "Taro,20,Tokyo";
string[] items = csv.Split(',');

Console.WriteLine(items[0]); // Taro
Console.WriteLine(items[1]); // 20
Console.WriteLine(items[2]); // Tokyo
C#

深掘りポイント

Split は 配列を返す ため、 分割後のデータは添字で取り出します。

また、CSV は「余計な空白」が含まれることが多いため、 Trim と組み合わせるとより安全です。

Trim を使って余計な空白を除去する

string csv = "  Taro , 20 , Tokyo  ";
string[] items = csv.Split(',');

string name = items[0].Trim();
string age = items[1].Trim();
string city = items[2].Trim();

Console.WriteLine(name); // Taro
Console.WriteLine(age);  // 20
Console.WriteLine(city); // Tokyo
C#

深掘りポイント

Trim は「前後の空白」を除去しますが、 文字列の途中の空白はそのまま残ります。

CSV のような外部データは、 余計な空白が混じることが多いため Trim は必須です。

Replace を使って区切り文字を変更する(応用)

CSV の区切り文字が「;」の場合もあります。

string csv = "Taro;20;Tokyo";
csv = csv.Replace(";", ",");

string[] items = csv.Split(',');
C#

深掘りポイント

Replace は「すべての該当箇所を置き換える」ため、 複数の区切り文字があっても一括で変更できます。

パスワード強度チェックを作る

強度チェックで使う文字列操作

パスワード強度チェックでは、次のような条件を確認します。

Length → 長さが十分か ToUpper / ToLower → 大文字・小文字が含まれているか Substring → 特定の文字列が含まれているか Replace → 禁止文字を除去する StringBuilder → エラーメッセージをまとめる

これらを組み合わせることで、 実用的なチェック機能を作れます。

パスワード強度チェックの基本形

string password = "Abc123!";

bool hasUpper = password != password.ToLower();
bool hasLower = password != password.ToUpper();
bool hasDigit = false;

for (int i = 0; i < password.Length; i++)
{
    if (char.IsDigit(password[i]))
        hasDigit = true;
}

bool isLongEnough = password.Length >= 8;

Console.WriteLine("大文字: " + hasUpper);
Console.WriteLine("小文字: " + hasLower);
Console.WriteLine("数字: " + hasDigit);
Console.WriteLine("長さ8以上: " + isLongEnough);
C#

深掘りポイント

大文字が含まれているかの判定 password.ToLower() と比較することで、 大文字が含まれているかを簡単に判定できます。

数字の判定 char.IsDigit を使うと安全で確実です。

StringBuilder を使ってエラーメッセージをまとめる

エラーメッセージをまとめる例

using System.Text;

StringBuilder sb = new StringBuilder();

if (!hasUpper)
    sb.AppendLine("大文字が必要です");

if (!hasLower)
    sb.AppendLine("小文字が必要です");

if (!hasDigit)
    sb.AppendLine("数字が必要です");

if (!isLongEnough)
    sb.AppendLine("8文字以上必要です");

Console.WriteLine(sb.ToString());
C#

深掘りポイント

StringBuilder は「大量の文字列連結」を高速に処理できます。 エラーメッセージのように複数行をまとめる場面で非常に便利です。

パスワード強度チェックの完成形

using System.Text;

string password = "Abc123!";

bool hasUpper = password != password.ToLower();
bool hasLower = password != password.ToUpper();
bool hasDigit = false;

for (int i = 0; i < password.Length; i++)
{
    if (char.IsDigit(password[i]))
        hasDigit = true;
}

bool isLongEnough = password.Length >= 8;

StringBuilder sb = new StringBuilder();

if (!hasUpper) sb.AppendLine("大文字が必要です");
if (!hasLower) sb.AppendLine("小文字が必要です");
if (!hasDigit) sb.AppendLine("数字が必要です");
if (!isLongEnough) sb.AppendLine("8文字以上必要です");

if (sb.Length == 0)
{
    Console.WriteLine("パスワードは安全です");
}
else
{
    Console.WriteLine("パスワードが弱いです:");
    Console.WriteLine(sb.ToString());
}
C#

Day9 後半のまとめ

Day9 後半では、文字列操作を使った実践的なプログラムを作りました。

CSVデータの分割 → Split × Trim × Replace パスワード強度チェック → Length × ToUpper/ToLower × StringBuilder

文字列操作は、実務で最も使われる処理のひとつです。

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