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
文字列操作は、実務で最も使われる処理のひとつです。
