[C#] 正規表現による文字列検索と置換のテクニック

スポンサーリンク

はじめに

文字列操作は、C# プログラミングにおいて日常的に行われる重要な作業のひとつです。特に、文字列検索と置換は、データ処理、ログ操作、入力バリデーションなど、多くの場面で役立ちます。本記事では、C# の標準機能や正規表現を活用した文字列検索と置換のテクニックを解説します。

 

文字列検索の基本操作

C# では、文字列の検索に IndexOfContains を使用します。

IndexOf で文字列を検索

string text = "C# is a powerful language.";
int index = text.IndexOf("powerful");

if (index != -1)
{
    Console.WriteLine($"\"powerful\" は {index} 番目にあります。");
}
else
{
    Console.WriteLine("\"powerful\" は見つかりません。");
}

ポイント

  • IndexOf: 最初に見つかった文字列の位置(0から始まるインデックス)を返します。
  • 見つからない場合は -1 を返します。

 

Contains で文字列が存在するか確認

string text = "C# is fun!";
if (text.Contains("fun"))
{
    Console.WriteLine("文字列に \"fun\" が含まれています。");
}
else
{
    Console.WriteLine("文字列に \"fun\" は含まれていません。");
}

ポイント

  • Contains: 指定した文字列が存在するかどうかを bool 値で返します。

 

文字列置換の基本操作

文字列の置換には、Replace を使用します。

Replace で文字列を置換

string text = "I love Java!";
string newText = text.Replace("Java", "C#");

Console.WriteLine(newText); // 出力: "I love C#!"

ポイント

  • Replace: 指定した部分文字列をすべて別の文字列に置換します。

 

正規表現を使った高度な検索と置換

正規表現を使用すると、複雑なパターンに基づいて検索や置換が可能です。C# では Regex クラスを活用します。

正規表現で特定の形式を検索

using System.Text.RegularExpressions;

string text = "My phone number is 123-456-7890.";
string pattern = @"\d{3}-\d{3}-\d{4}";
Match match = Regex.Match(text, pattern);

if (match.Success)
{
    Console.WriteLine($"見つかった番号: {match.Value}");
}
else
{
    Console.WriteLine("電話番号は見つかりませんでした。");
}

ポイント

  • \d{3}-\d{3}-\d{4}: 電話番号の形式にマッチする正規表現パターンです。
  • Regex.Match: 最初に一致する部分を検索します。

 

正規表現で置換

using System.Text.RegularExpressions;

string text = "My email is example@example.com.";
string pattern = @"[\w\.-]+@[\w\.-]+\.\w+";
string replacedText = Regex.Replace(text, pattern, "[メールアドレス]");

Console.WriteLine(replacedText);
// 出力: "My email is [メールアドレス]."

ポイント

  • Regex.Replace: パターンに一致するすべての部分を置換します。

 

ベストプラクティスと注意点

適切なメソッドを選ぶ

  • 単純な部分文字列検索や置換には IndexOfReplace を使う。
  • 複雑な条件が必要な場合は Regex を活用する。

パフォーマンスに注意

  • 正規表現は強力ですが、複雑なパターンを使うと処理速度に影響することがあります。
  • 可能であれば、シンプルな検索メソッドを優先しましょう。

エスケープ文字に注意

  • 正規表現や特定の文字列(例: \$)を使用する場合は、エスケープが必要になることがあります。

 

まとめ

C# での文字列検索と置換は、基本的な操作から正規表現を用いた高度な操作まで幅広い範囲をカバーしています。本記事で紹介したテクニックを活用することで、以下のような作業を効率的に行えるようになります:

  1. 文字列内の特定の部分を簡単に検索する。
  2. 文字列全体や部分を別の文字列に置換する。
  3. 複雑なパターンに基づいて文字列を操作する。

これらのテクニックを実践的なアプリケーションで活用し、文字列操作をより効率的に行いましょう!

 

Please follow and like us:

コメント

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