C#で日付を記念日の名前に変換する奴を作成してみた！

今回はC#の正規表現を用いて、文章中に存在する日付を記念日に変換する奴を作成しました。

## アプリの概要
このアプリは、ユーザーが入力したテキスト内に含まれる日付（例：01-01や1月1日）を特定の記念日に変換するものです。

例えば、以下のようなテキストを入力すると：
```text
今日は01-01だね。
```
変換後は：
```text
今日は元日だね。
```
といった具合に、日付を対応する記念日の名前に置き換えます。

## 実装のポイント
### 1. データ構造
記念日を管理するために、Dictionary<string, List<string>>を使用しました。この辞書は、日付（MM-dd形式）をキーにして、対応する複数の記念日を格納しています。
```C#
Dictionary<string, List<string>> converter = new Dictionary<string, List<string>>()
{
    {"01-01", new List<string>(){ "元日", "鉄腕アトムの日" }},
    {"01-02", new List<string>(){ "初夢の日" }},
    {"01-03", new List<string>(){ "瞳の日", "駆け落ちの日" }},
    // ... (その他の日付も定義)
};
```

### 2. 正規表現で日付を抽出
ユーザーが入力したテキストから日付を抽出するために、正規表現を使用しました。以下のパターンでMM-ddや1月1日形式を同時に処理します。
```C#
string pattern = @"(1[0-2]|0?[1-9])[-月/]([1-2][0-9]|3[0-1]|0?[1-9])[日]?";
```

### 3. 日付の有効性を確認
抽出した日付が有効かどうかを確認するために、DateTime.TryParseを使用しています。
```C#
bool isValidDate = DateTime.TryParse($"{month}/{day}/2000", out DateTime parsedDate);
```
### 4. 置換処理
最後に有効な日付の場合はランダムな記念日に置換し、無効な日付は元の値を維持します。
```C#
private string Replace(string text)
{
    string replacedText = Regex.Replace(text, pattern, match =>
    {
        int month = int.Parse(match.Groups[1].Value);
        int day = int.Parse(match.Groups[2].Value);

        // 日付が有効か確認
        bool isValidDate = DateTime.TryParse($"{month}/{day}/2000", out DateTime parsedDate);

        // 有効な日付ならフォーマットを変更、そうでなければそのまま
        return isValidDate ? GetRandomItem(converter[parsedDate.ToString("MM-dd")]) : match.Value;
    });

    return replacedText;
}

// リストからランダムな要素を取得するメソッド
static T GetRandomItem<T>(List<T> list)
{
    if (list == null || list.Count == 0)
    {
        throw new ArgumentException("The list cannot be null or empty.");
    }

    Random random = new Random();
    int randomIndex = random.Next(list.Count); // ランダムなインデックスを生成
    return list[randomIndex]; // ランダムな要素を返す
}
```

### コード全体
<details><summary>長いので折りたたみました。</summary>

```C#
using System.Text.RegularExpressions;

namespace DateToNameConverter
{
    public partial class MainForm : Form
    {
        Dictionary<string, List<string>> converter = new Dictionary<string, List<string>>()
        {
            {"01-01", new List<string>(){ "元日", "鉄腕アトムの日" }},
            {"01-02", new List<string>(){ "初夢の日" }},
            {"01-03", new List<string>(){ "瞳の日", "駆け落ちの日" }},
            {"01-04", new List<string>(){ "石の日" }},
            {"01-05", new List<string>(){ "囲碁の日", "いちごの日" }},
            {"01-06", new List<string>(){ "色の日", "ショートケーキの日" }},
            {"01-07", new List<string>(){ "爪切りの日", "千円札の日" }},
            {"01-08", new List<string>(){ "外国郵便の日", "勝負事の日" }},
            {"01-09", new List<string>(){ "風邪の日", "とんちの日" }},
            {"01-10", new List<string>(){ "110番の日", "明太子の日" }},
            {"01-11", new List<string>(){ "塩の日" }},
            {"01-12", new List<string>(){ "スキーの日", "桜島の日" }},
            {"01-13", new List<string>(){ "たばこの日" }},
            {"01-14", new List<string>(){ "タロとジロの日" }},
            {"01-15", new List<string>(){ "フードドライブの日" }},
            {"01-16", new List<string>(){ "禁酒の日" }},
            {"01-17", new List<string>(){ "防災とボランティアの日", "おむすびの日" }},
            {"01-18", new List<string>(){ "118番の日", "都バス記念日", "振袖火事の日" }},
            {"01-19", new List<string>(){ "のど自慢の日", "カラオケの日" }},
            {"01-20", new List<string>(){ "玉の輿の日" }},
            {"01-21", new List<string>(){ "料理番組の日" }},
            {"01-22", new List<string>(){ "ジャズの日", "カレーの日", "飛行船の日" }},
            {"01-23", new List<string>(){ "電子メールの日", "八甲田山の日", "アーモンドの日" }},
            {"01-24", new List<string>(){ "郵便制度施行記念日", "法律扶助の日", "すき焼きの日", "ボーイスカウト創立記念日" }},
            {"01-25", new List<string>(){ "日本最低気温の日", "ホットケーキの日", "中華まんの日", "左遷の日", "お詫びの日" }},
            {"01-26", new List<string>(){ "文化財防火デー", "パーキングメーターの日" }},
            {"01-27", new List<string>(){ "国旗制定記念日", "求婚の日" }},
            {"01-28", new List<string>(){ "コピーライターの日", "衣類乾燥機の日" }},
            {"01-29", new List<string>(){ "昭和基地開設記念日", "タウン情報の日" }},
            {"01-30", new List<string>(){ "3分間電話の日" }},
            {"01-31", new List<string>(){ "生命保険の日", "愛妻家の日", "ファイナルファンタジーVIIの日" }},
            {"02-01", new List<string>(){ "テレビ放送記念日", "ニオイの日", "プリキュアの日" }},
            {"02-02", new List<string>(){ "頭痛の日", "ツインテールの日", "くちびるの日" }},
            {"02-03", new List<string>(){ "大岡越前の日", "絵手紙の日" }},
            {"02-04", new List<string>(){ "西の日", "銀閣寺の日", "Nissyの日" }},
            {"02-05", new List<string>(){ "プロ野球の日", "ピカチュウの日" }},
            {"02-06", new List<string>(){ "海苔の日", "抹茶の日", "ブログの日" }},
            {"02-07", new List<string>(){ "北方領土の日" }},
            {"02-08", new List<string>(){ "ロカビリーの日", "にわとりの日" }},
            {"02-09", new List<string>(){ "服の日", "福の日", "肉の日" }},
            {"02-10", new List<string>(){ "フルートの日", "ニットの日", "ふきのとうの日", "観劇の日", "太物の日" }},
            {"02-11", new List<string>(){ "建国記念の日", "信教の自由を守る日", "万歳三唱の日", "わんこそば記念日" }},
            {"02-12", new List<string>(){ "ブラジャーの日", "ボブスレーの日", "ボンカレーの日／レトルトカレーの日" }},
            {"02-13", new List<string>(){ "銀行強盗の日", "気くばりの日", "日本遺産の日" }},
            {"02-14", new List<string>(){ "バレンタインデー", "チョコレートの日", "煮干の日", "ふんどしの日" }},
            {"02-15", new List<string>(){ "春一番名づけの日" }},
            {"02-16", new List<string>(){ "天気図記念日", "寒天の日" }},
            {"02-17", new List<string>(){ "天使のささやきの日" }},
            {"02-18", new List<string>(){ "エアメールの日", "嫌煙運動の日" }},
            {"02-19", new List<string>(){ "万国郵便連合加盟記念日", "プロレスの日" }},
            {"02-20", new List<string>(){ "旅券の日", "歌舞伎の日", "普通選挙の日", "アレルギーの日", "交通事故ゼロを目指す日" }},
            {"02-21", new List<string>(){ "日刊新聞創刊の日", "食糧管理法公布記念日", "漱石の日" }},
            {"02-22", new List<string>(){ "猫の日", "食器洗い乾燥機の日", "忍者の日", "乃木坂46の日", "竹島の日", "行政書士記念日" }},
            {"02-23", new List<string>(){ "税理士記念日", "富士山の日", "ふろしきの日" }},
            {"02-24", new List<string>(){ "鉄道ストの日", "月光仮面登場の日" }},
            {"02-25", new List<string>(){ "夕刊紙の日", "箱根用水完成の日" }},
            {"02-26", new List<string>(){ "咸臨丸の日", "血液銀行開業記念日" }},
            {"02-27", new List<string>(){ "新選組の日", "絆の日(冬の恋人の日)", "ポケモンの日" }},
            {"02-28", new List<string>(){ "エッセイ記念日", "ビスケットの日", "バカヤローの日", "織部の日" }},
            {"02-29", new List<string>(){ "ニンニクの日", "富士急の日", "閏肉の日", "キン肉マンの日" }},
            {"03-01", new List<string>(){ "ビキニデー", "労働法施行記念日" }},
            {"03-02", new List<string>(){ "ミニチュアの日" }},
            {"03-03", new List<string>(){ "耳の日", "民放ラジオの日", "平和の日", "桃の日", "金魚の日", "結納の日", "サルサの日", "サザンの日" }},
            {"03-04", new List<string>(){ "雑誌の日", "ミシンの日", "サッシの日", "三線の日" }},
            {"03-05", new List<string>(){ "珊瑚の日", "ミスコンの日", "スチュワーデスの日" }},
            {"03-06", new List<string>(){ "エステティックサロンの日", "弟の日", "スポーツ新聞の日", "世界一周記念日", "36(サブロク)の日" }},
            {"03-07", new List<string>(){ "消防記念日", "警察制度改正記念日" }},
            {"03-08", new List<string>(){ "ミツバチの日", "エスカレーターの日", "みやげの日", "光の日", "サバの日" }},
            {"03-09", new List<string>(){ "漁業法記念日", "ありがとうの日", "記念切手記念日", "ミクの日" }},
            {"03-10", new List<string>(){ "陸軍記念日", "砂糖の日", "佐渡の日", "水戸の日", "ミントの日", "サボテンの日", "農山漁村女性の日" }},
            {"03-11", new List<string>(){ "コラムの日" }},
            {"03-12", new List<string>(){ "サイフの日", "モスの日" }},
            {"03-13", new List<string>(){ "青函トンネル開業記念日", "気くばりの日" }},
            {"03-14", new List<string>(){ "ホワイトデー", "キャンデーの日", "マシュマロデー", "国際結婚の日", "πの日" }},
            {"03-15", new List<string>(){ "靴の記念日", "オリーブの日" }},
            {"03-16", new List<string>(){ "国立公園指定記念日" }},
            {"03-17", new List<string>(){ "漫画週刊誌の日" }},
            {"03-18", new List<string>(){ "精霊の日" }},
            {"03-19", new List<string>(){ "ミュージックの日" }},
            {"03-20", new List<string>(){ "動物愛護デー", "上野動物園開園記念日", "LPレコードの日", "電卓の日", "未病の日" }},
            {"03-21", new List<string>(){ "ランドセルの日", "はじめようの日" }},
            {"03-22", new List<string>(){ "放送記念日" }},
            {"03-23", new List<string>(){ "スジャータの日" }},
            {"03-24", new List<string>(){ "マネキン記念日" }},
            {"03-25", new List<string>(){ "電気記念日" }},
            {"03-26", new List<string>(){ "カチューシャの歌の日" }},
            {"03-27", new List<string>(){ "さくらの日" }},
            {"03-28", new List<string>(){ "三つ葉の日", "刀剣乱舞・審神者の日" }},
            {"03-29", new List<string>(){ "マリモの日", "ラヴィット!の日" }},
            {"03-30", new List<string>(){ "サラサーティの日", "信長の野望の日" }},
            {"03-31", new List<string>(){ "学校教育法公布記念日", "オーケストラの日", "経理の日" }},
            {"04-01", new List<string>(){ "エイプリルフール", "児童福祉法施行記念日", "売春防止法施行記念日", "トレーニングの日", "ストラップの日", "建設業DX推進の日" }},
            {"04-02", new List<string>(){ "週刊誌の日", "歯列矯正の日" }},
            {"04-03", new List<string>(){ "シーサーの日", "いんげん豆の日", "植栽日" }},
            {"04-04", new List<string>(){ "あんぱんの日", "獅子の日", "トランスジェンダーの日", "脂肪0%ヨーグルトの日" }},
            {"04-05", new List<string>(){ "デビューの日", "ヘアカットの日", "横町の日" }},
            {"04-06", new List<string>(){ "白の日", "城の日" }},
            {"04-07", new List<string>(){ "スーチーパイの日", "未病管理の日" }},
            {"04-08", new List<string>(){ "参考書の日", "忠犬ハチ公の日", "タイヤの日", "折り紙供養の日", "貝の日", "Get Wildの日" }},
            {"04-09", new List<string>(){ "フォークソングの日", "大仏の日", "左官の日" }},
            {"04-10", new List<string>(){ "ヨットの日", "四万十の日", "建具の日", "良い戸の日", "交通事故ゼロを目指す日" }},
            {"04-11", new List<string>(){ "メートル法公布記念日", "ガッツポーズの日" }},
            {"04-12", new List<string>(){ "タイルの日" }},
            {"04-13", new List<string>(){ "決闘の日", "喫茶店の日" }},
            {"04-14", new List<string>(){ "オレンジデー", "柔道整復の日" }},
            {"04-15", new List<string>(){ "ヘリコプターの日", "遺言の日" }},
            {"04-16", new List<string>(){ "女子マラソンの日" }},
            {"04-17", new List<string>(){ "ハローワークの日", "恐竜の日" }},
            {"04-18", new List<string>(){ "発明の日", "お香の日" }},
            {"04-19", new List<string>(){ "地図の日" }},
            {"04-20", new List<string>(){ "逓信記念日", "郵政記念日", "女子大の日", "青年海外協力隊の日" }},
            {"04-21", new List<string>(){ "民放の日" }},
            {"04-22", new List<string>(){ "清掃デー", "道の駅の日" }},
            {"04-23", new List<string>(){ "サン・ジョルディの日", "子ども読書の日", "地ビールの日" }},
            {"04-24", new List<string>(){ "日本ダービー記念日", "植物学の日" }},
            {"04-25", new List<string>(){ "歩道橋の日", "拾得物の日" }},
            {"04-26", new List<string>(){ "よい風呂の日" }},
            {"04-27", new List<string>(){ "悪妻の日", "婦人警官記念日" }},
            {"04-28", new List<string>(){ "サンフランシスコ講和記念日", "象の日", "シニアの日" }},
            {"04-29", new List<string>(){ "羊肉の日", "畳の日" }},
            {"04-30", new List<string>(){ "図書館記念日" }},
            {"05-01", new List<string>(){ "メーデー", "日本赤十字社創立記念日", "青春の日", "扇の日", "スズランの日", "サラウンドの日", "語彙の日" }},
            {"05-02", new List<string>(){ "郵便貯金の日", "交通広告の日", "エンピツ記念日", "歯科医師記念日" }},
            {"05-03", new List<string>(){ "憲法記念日", "ゴミの日" }},
            {"05-04", new List<string>(){ "みどりの日", "名刺の日", "競艇の日", "ラムネの日", "植物園の日", "エメラルドの日" }},
            {"05-05", new List<string>(){ "こどもの日", "おもちゃの日", "わかめの日", "自転車の日", "薬の日", "ジャグラーの日" }},
            {"05-06", new List<string>(){ "コロコロの日", "ゴムの日", "コロッケの日" }},
            {"05-07", new List<string>(){ "粉の日", "博士の日" }},
            {"05-08", new List<string>(){ "松の日", "ゴーヤーの日", "御用の日" }},
            {"05-09", new List<string>(){ "アイスクリームの日", "黒板の日", "メイクの日", "悟空の日", "謎解きの日" }},
            {"05-10", new List<string>(){ "コットンの日", "愛鳥の日", "メイドの日" }},
            {"05-11", new List<string>(){ "長良川鵜飼開きの日" }},
            {"05-12", new List<string>(){ "看護の日", "海上保安の日", "アセロラの日" }},
            {"05-13", new List<string>(){ "メイストームデー", "2文字スピーチの日" }},
            {"05-14", new List<string>(){ "けん玉の日", "マーマレードの日" }},
            {"05-15", new List<string>(){ "沖縄返還の日", "ヨーグルトの日", "ストッキングの日", "Jリーグの日" }},
            {"05-16", new List<string>(){ "旅の日" }},
            {"05-17", new List<string>(){ "パック旅行の日" }},
            {"05-18", new List<string>(){ "ことばの日" }},
            {"05-19", new List<string>(){ "ボクシング記念日", "チャンピオンの日" }},
            {"05-20", new List<string>(){ "ローマ字の日", "森林の日" }},
            {"05-21", new List<string>(){ "小学校開校の日" }},
            {"05-22", new List<string>(){ "ガールスカウトの日" }},
            {"05-23", new List<string>(){ "キスの日", "ラブレターの日", "難病の日" }},
            {"05-24", new List<string>(){ "ゴルフ場記念日", "伊達巻の日" }},
            {"05-25", new List<string>(){ "食堂車の日", "広辞苑記念日" }},
            {"05-26", new List<string>(){ "ラッキーゾーンの日" }},
            {"05-27", new List<string>(){ "ドラゴンクエストの日", "海軍記念日", "百人一首の日", "小松菜の日" }},
            {"05-28", new List<string>(){ "ゴルフ記念日" }},
            {"05-29", new List<string>(){ "呉服の日", "こんにゃくの日" }},
            {"05-30", new List<string>(){ "消費者の日", "ごみゼロの日", "掃除機の日" }},
            {"05-31", new List<string>(){ "古材の日" } },
                        {"06-01", new List<string>(){ "気象記念日", "電波の日", "景観の日", "写真の日", "麦茶の日", "チューインガムの日", "氷の日", "真珠の日", "バッジの日", "ねじの日", "人権擁護委員の日", "TUBEの日", "牛乳の日", "氷狐の日", "い草の日" }},
            {"06-02", new List<string>(){ "路地の日", "裏切りの日" }},
            {"06-03", new List<string>(){ "測量の日", "ムーミンの日", "ケロミンの日", "雲仙普賢岳祈りの日" }},
            {"06-04", new List<string>(){ "虫の日", "すとぷりの日" }},
            {"06-05", new List<string>(){ "環境の日" }},
            {"06-06", new List<string>(){ "補聴器の日", "邦楽の日", "楽器の日", "梅の日", "かえるの日", "兄の日", "ケロケロの日" }},
            {"06-07", new List<string>(){ "母親大会記念日", "むち打ち治療の日" }},
            {"06-08", new List<string>(){ "ロハスの日", "ガパオの日" }},
            {"06-09", new List<string>(){ "ロックの日" }},
            {"06-10", new List<string>(){ "時の記念日", "路面電車の日", "商工会の日", "歩行者天国の日", "ミルクキャラメルの日" }},
            {"06-11", new List<string>(){ "国立銀行設立の日", "雨漏り点検の日" }},
            {"06-12", new List<string>(){ "バザー記念日" }},
            {"06-13", new List<string>(){ "鉄人の日", "FMの日", "小さな親切の日", "はやぶさの日", "いいみょうがの日" }},
            {"06-14", new List<string>(){ "認知症予防の日", "手羽先記念日" }},
            {"06-15", new List<string>(){ "信用金庫の日", "暑中見舞いの日", "オウムとインコの日", "米百俵デー" }},
            {"06-16", new List<string>(){ "和菓子の日", "麦とろの日", "ケーブルテレビの日", "無重力の日", "スペースインベーダーの日" }},
            {"06-17", new List<string>(){ "おまわりさんの日", "薩摩の日" }},
            {"06-18", new List<string>(){ "海外移住の日" }},
            {"06-19", new List<string>(){ "元号の日", "朗読の日", "ロマンスの日" }},
            {"06-20", new List<string>(){ "ペパーミントデー" }},
            {"06-21", new List<string>(){ "スナックの日" }},
            {"06-22", new List<string>(){ "かにの日", "ボウリングの日" }},
            {"06-23", new List<string>(){ "沖縄慰霊の日" }},
            {"06-24", new List<string>(){ "UFO記念日" }},
            {"06-25", new List<string>(){ "住宅デー", "百合の日" }},
            {"06-26", new List<string>(){ "露天風呂の日", "オリエンテーリングの日", "国民憲章調印記念日", "世界格闘技の日" }},
            {"06-27", new List<string>(){ "演説の日", "日照権の日", "女性雑誌の日", "ちらし寿司の日", "メディア・リテラシーの日", "ハピカジの日" }},
            {"06-28", new List<string>(){ "貿易記念日", "パフェの日" }},
            {"06-29", new List<string>(){ "ビートルズ記念日", "佃煮の日" }},
            {"06-30", new List<string>(){ "集団疎開の日" }},
            {"07-01", new List<string>(){ "国民安全の日", "童謡の日", "建築士の日", "弁理士の日", "郵便番号記念日", "更生保護の日", "銀行の日", "ナビの日" }},
            {"07-02", new List<string>(){ "ユネスコ加盟記念の日", "たわしの日" }},
            {"07-03", new List<string>(){ "ソフトクリームの日", "波の日", "通天閣の日" }},
            {"07-04", new List<string>(){ "梨の日" }},
            {"07-05", new List<string>(){ "江戸切子の日", "穴子の日" }},
            {"07-06", new List<string>(){ "公認会計士の日", "ゼロ戦の日" }},
            {"07-07", new List<string>(){ "川の日", "カルピスの日", "冷やし中華の日", "ポニーテールの日", "ゆかたの日", "ハスカップの日" }},
            {"07-08", new List<string>(){ "那覇の日", "質屋の日", "ナンパの日" }},
            {"07-09", new List<string>(){ "ジェットコースターの日", "なな→きゅうの日" }},
            {"07-10", new List<string>(){ "納豆の日", "ウルトラマンの日", "ブナピーの日" }},
            {"07-11", new List<string>(){ "ラーメンの日" }},
            {"07-12", new List<string>(){ "人間ドックの日" }},
            {"07-13", new List<string>(){ "日本標準時制定記念日", "オカルト記念日", "ナイスの日", "2文字スピーチの日", "生命尊重の日" }},
            {"07-14", new List<string>(){ "検疫記念日", "求人広告の日" }},
            {"07-15", new List<string>(){ "ファミコンの日" }},
            {"07-16", new List<string>(){ "駅弁記念日", "国土交通Day" }},
            {"07-17", new List<string>(){ "東京の日" }},
            {"07-18", new List<string>(){ "光化学スモッグの日" }},
            {"07-19", new List<string>(){ "女性大臣の日", "カープ黄金時代幕開けの日" }},
            {"07-20", new List<string>(){ "勤労青少年の日", "ハンバーガーの日", "Tシャツの日", "修学旅行の日" }},
            {"07-21", new List<string>(){ "自然公園の日" }},
            {"07-22", new List<string>(){ "ナッツの日", "ONE PIECEの日" }},
            {"07-23", new List<string>(){ "ふみの日", "米騒動の日" }},
            {"07-24", new List<string>(){ "劇画の日", "卒業アルバムの日" }},
            {"07-25", new List<string>(){ "最高気温記念日", "うま味調味料の日", "かき氷の日" }},
            {"07-26", new List<string>(){ "幽霊の日" }},
            {"07-27", new List<string>(){ "スイカの日" }},
            {"07-28", new List<string>(){ "菜っ葉の日", "なにわの日", "冷蔵庫記念日", "地名の日" }},
            {"07-29", new List<string>(){ "アマチュア無線の日", "白だしの日" }},
            {"07-30", new List<string>(){ "梅干の日" }},
            {"07-31", new List<string>(){ "蓄音機の日", "こだまの日", "パラグライダー記念日" }},
                        {"08-01", new List<string>(){ "水の日", "観光の日", "肺の日", "夏の省エネ総点検の日", "パインの日", "麻雀の日" }},
            {"08-02", new List<string>(){ "パンツの日", "ハーブの日", "博多人形の日", "ハラスメントフリーの日", "ねぶたの日" }},
            {"08-03", new List<string>(){ "ビーチサンダルの日", "はちみつの日", "はさみの日", "共創する未来の日" }},
            {"08-04", new List<string>(){ "橋の日", "箸の日" }},
            {"08-05", new List<string>(){ "箱の日", "タクシーの日", "ハードコアテクノの日", "山ごはんの日", "パソコン工房の日" }},
            {"08-06", new List<string>(){ "広島原爆忌", "ハムの日", "ハムスターの日" }},
            {"08-07", new List<string>(){ "鼻の日", "花の日", "バナナの日" }},
            {"08-08", new List<string>(){ "フジテレビの日", "そろばんの日", "ヒゲの日", "ひょうたんの日", "屋根の日", "プチプチの日", "葉っぱの日", "サステナブルファッションの日" }},
            {"08-09", new List<string>(){ "長崎原爆忌", "野球の日", "薬草の日", "はり・きゅう・マッサージの日", "ハグの日", "パークの日", "パソコン救急の日", "パソコン検定の日", "パグの日", "反中共デー" }},
            {"08-10", new List<string>(){ "道の日", "宿の日", "帽子の日", "ハートの日", "レゲエミュージックの日" }},
            {"08-11", new List<string>(){ "山の日", "スポーツ中継の日", "オフ会記念日", "山の日", "ガンバレの日" }},
            {"08-12", new List<string>(){ "君が代記念日" }},
            {"08-13", new List<string>(){ "函館夜景の日", "深読みの日" }},
            {"08-14", new List<string>(){ "特許の日", "ハッピーサマーバレンタインデー" }},
            {"08-15", new List<string>(){ "終戦の日" }},
            {"08-16", new List<string>(){ "電子コミックの日" }},
            {"08-17", new List<string>(){ "パイナップルの日", "プロ野球ナイター記念日" }},
            {"08-18", new List<string>(){ "高校野球記念日" }},
            {"08-19", new List<string>(){ "バイクの日", "俳句の日", "ハイキューの日" }},
            {"08-20", new List<string>(){ "発毛の日", "蚊の日" }},
            {"08-21", new List<string>(){ "噴水の日", "献血記念日", "女子大生の日" }},
            {"08-22", new List<string>(){ "居心地の日" }},
            {"08-23", new List<string>(){ "白虎隊の日" }},
            {"08-24", new List<string>(){ "大噴火の日" }},
            {"08-25", new List<string>(){ "即席ラーメン記念日" }},
            {"08-26", new List<string>(){ "レインボーブリッジの日", "パワプロの日", "火山防災の日" }},
            {"08-27", new List<string>(){ "寅さんの日" }},
            {"08-28", new List<string>(){ "キャラディネートの日", "バイオリンの日", "民放テレビスタートの日" }},
            {"08-29", new List<string>(){ "焼き肉の日", "ケーブルカーの日" }},
            {"08-30", new List<string>(){ "冒険家の日" }},
            {"08-31", new List<string>(){ "野菜の日" }},
            {"09-01", new List<string>(){ "防災の日", "キウイの日", "だじゃれの日" }},
            {"09-02", new List<string>(){ "宝くじの日", "牛乳の日" }},
            {"09-03", new List<string>(){ "ベッドの日", "ホームラン記念日", "草野球の日", "妹の日" }},
            {"09-04", new List<string>(){ "くしの日", "クラシック音楽の日" }},
            {"09-05", new List<string>(){ "石炭の日", "国民栄誉賞の日" }},
            {"09-06", new List<string>(){ "黒の日", "黒豆の日", "妹の日" }},
            {"09-07", new List<string>(){ "クリーナーの日", "CMソングの日" }},
            {"09-08", new List<string>(){ "桑の日", "休養の日", "クーパー靱帯の日", "クレバの日" }},
            {"09-09", new List<string>(){ "救急の日", "温泉の日", "チョロQの日", "九九の日", "ポップコーンの日" }},
            {"09-10", new List<string>(){ "弓道の日", "全国下水道促進デー", "下水道の日", "屋外広告の日", "クレジットカードの日" }},
            {"09-11", new List<string>(){ "警察相談の日", "公衆電話の日" }},
            {"09-12", new List<string>(){ "宇宙の日" }},
            {"09-13", new List<string>(){ "司法保護記念日" }},
            {"09-14", new List<string>(){ "メンズバレンタインデー" }},
            {"09-15", new List<string>(){ "老人の日", "日本のキャビアの日", "ひじきの日" }},
            {"09-16", new List<string>(){ "競馬の日" }},
            {"09-17", new List<string>(){ "モノレール開業記念日" }},
            {"09-18", new List<string>(){ "かいわれ大根の日", "しまくとぅばの日" }},
            {"09-19", new List<string>(){ "苗字の日" }},
            {"09-20", new List<string>(){ "空の日", "バスの日", "お手玉の日" }},
            {"09-21", new List<string>(){ "ガトーショコラの日", "ファッションショーの日" }},
            {"09-22", new List<string>(){ "孤児院の日" }},
            {"09-23", new List<string>(){ "不動産の日", "万年筆の日" }},
            {"09-24", new List<string>(){ "清掃の日", "畳の日" }},
            {"09-25", new List<string>(){ "10円カレーの日" }},
            {"09-26", new List<string>(){ "ワープロの日" }},
            {"09-27", new List<string>(){ "女性ドライバーの日", "世界観光の日", "きぶなの日", "信州 火山防災の日" }},
            {"09-28", new List<string>(){ "パソコン記念日" }},
            {"09-29", new List<string>(){ "クリーニングの日", "招き猫の日", "接着の日" }},
            {"09-30", new List<string>(){ "くるみの日", "クレーンの日" }},
            {"10-01", new List<string>(){ "法の日", "印章の日", "日本酒の日", "メガネの日", "香水の日", "デザインの日", "福祉用具の日", "浄化槽の日", "電動工具の日", "国際音楽の日" }},
            {"10-02", new List<string>(){ "豆腐の日", "望遠鏡の日" }},
            {"10-03", new List<string>(){ "登山の日", "アンパンマンの日" }},
            {"10-04", new List<string>(){ "いわしの日", "天使の日", "陶器の日", "里親デー", "都市景観の日", "探し物の日", "証券投資の日" }},
            {"10-05", new List<string>(){ "時刻表記念日", "レモンの日", "折り紙供養の日", "音楽芸術の日", "統合医療の日" }},
            {"10-06", new List<string>(){ "国際協力の日" }},
            {"10-07", new List<string>(){ "ミステリー記念日" }},
            {"10-08", new List<string>(){ "木の日", "入れ歯の日", "足袋の日", "レーザーディスクの日", "骨と関節の日", "焼おにぎりの日" }},
            {"10-09", new List<string>(){ "トラックの日", "塾の日", "道具の日", "土偶の日", "金券の日", "共に守るマスクの日" }},
            {"10-10", new List<string>(){ "目の愛護デー", "釣りの日", "まぐろの日", "缶詰の日", "冷凍めんの日", "銭湯の日", "トレーナーの日", "totoの日", "JUJUの日", "ドラムの日", "ふとんの日" }},
            {"10-11", new List<string>(){ "鉄道安全確認の日", "ウィンクの日", "先住犬の日" }},
            {"10-12", new List<string>(){ "石油機器点検の日" }},
            {"10-13", new List<string>(){ "サツマイモの日", "引越しの日", "麻酔の日" }},
            {"10-14", new List<string>(){ "鉄道の日" }},
            {"10-15", new List<string>(){ "たすけあいの日", "きのこの日", "ぞうりの日" }},
            {"10-16", new List<string>(){ "ボスの日" }},
            {"10-17", new List<string>(){ "貯蓄の日", "上水道の日", "沖縄そばの日", "カラオケ文化の日", "秦野名水の日" }},
            {"10-18", new List<string>(){ "木造住宅の日", "統計の日", "冷凍食品の日", "ミニスカートの日", "フラフープ記念日" }},
            {"10-19", new List<string>(){ "バーゲンの日", "海外旅行の日", "相続税を考える日" }},
            {"10-20", new List<string>(){ "リサイクルの日", "新聞広告の日", "頭髪の日" }},
            {"10-21", new List<string>(){ "あかりの日" }},
            {"10-22", new List<string>(){ "方言の日", "絹婚記念日", "平安遷都の日", "アニメの日" }},
            {"10-23", new List<string>(){ "電信電話記念日", "津軽弁の日" }},
            {"10-24", new List<string>(){ "ツーバイフォー住宅の日", "文鳥の日" }},
            {"10-25", new List<string>(){ "リクエストの日", "民間航空記念日" }},
            {"10-26", new List<string>(){ "原子力の日", "サーカスの日" }},
            {"10-27", new List<string>(){ "読書の日", "世界新記録の日" }},
            {"10-28", new List<string>(){ "速記記念日", "反韓デー" }},
            {"10-29", new List<string>(){ "ホームビデオ記念日" }},
            {"10-30", new List<string>(){ "初恋の日", "食品ロス削減の日" }},
            {"10-31", new List<string>(){ "日本茶の日", "ガスの記念日", "陶彩の日" }},
            {"11-01", new List<string>(){ "犬の日", "紅茶の日", "玄米茶の日", "泡盛の日", "すしの日", "カーペットの日", "灯台記念日", "計量記念日", "点字記念日", "自衛隊記念日", "古典の日", "ソーセージの日", "いい医療の日" }},
            {"11-02", new List<string>(){ "阪神タイガース記念日", "タイツの日" }},
            {"11-03", new List<string>(){ "文化の日", "文具の日", "レコードの日", "ハンカチーフの日", "ゴジラの日", "いいお産の日", "いいレザーの日", "赤べこの日" }},
            {"11-04", new List<string>(){ "かき揚げの日", "消費者センター開設記念日" }},
            {"11-05", new List<string>(){ "電報の日", "雑誌広告の日", "津波防災の日" }},
            {"11-06", new List<string>(){ "お見合い記念日", "アパート記念日" }},
            {"11-07", new List<string>(){ "鍋の日", "知恵の日", "国有財産の日" }},
            {"11-08", new List<string>(){ "刃物の日", "ボイラーデー", "世界都市計画の日", "いい歯の日", "梱包の日" }},
            {"11-09", new List<string>(){ "119番の日", "換気の日", "太陽暦採用記念日", "歯ぐきの日" }},
            {"11-10", new List<string>(){ "エレベーターの日", "ハンドクリームの日", "技能の日", "無電柱化の日" }},
            {"11-11", new List<string>(){ "いい獣医の日", "ジュエリーデー", "サッカーの日", "くつしたの日", "電池の日", "配線器具の日", "煙突の日", "下駄の日", "おりがみの日", "鮭の日", "チーズの日", "もやしの日", "ピーナッツの日", "きりたんぽの日", "ポッキー&プリッツの日", "介護の日", "鏡の日", "ネイルの日", "チンアナゴの日" }},
            {"11-12", new List<string>(){ "皮膚の日" }},
            {"11-13", new List<string>(){ "うるしの日", "あいさつの日" }},
            {"11-14", new List<string>(){ "パチンコの日", "医師に感謝する日" }},
            {"11-15", new List<string>(){ "きものの日", "かまぼこの日", "こんぶの日", "いい遺言の日" }},
            {"11-16", new List<string>(){ "幼稚園記念日" }},
            {"11-17", new List<string>(){ "将棋の日", "蓮根の日", "ドラフト記念日" }},
            {"11-18", new List<string>(){ "土木の日", "音楽著作権の日" }},
            {"11-19", new List<string>(){ "緑のおばさんの日", "農協記念日" }},
            {"11-20", new List<string>(){ "毛皮の日", "ホテルの日", "ピザの日" }},
            {"11-21", new List<string>(){ "フライドチキンの日", "イーブイの日" }},
            {"11-22", new List<string>(){ "THANKS PETS DAY", "いい夫婦の日", "ボタンの日", "回転寿司記念日", "大工さんの日" }},
            {"11-23", new List<string>(){ "勤労感謝の日", "Jリーグの日", "ゲームの日", "カキの日", "外食の日", "手袋の日", "ワーク・ライフ・バランスの日", "いいふみの日" }},
            {"11-24", new List<string>(){ "鰹節の日", "オペラ記念日" }},
            {"11-25", new List<string>(){ "OLの日", "ハイビジョンの日" }},
            {"11-26", new List<string>(){ "ペンの日", "いい風呂の日", "ビン牛乳の日" }},
            {"11-27", new List<string>(){ "いい鮒の日" }},
            {"11-28", new List<string>(){ "税関記念日" }},
            {"11-29", new List<string>(){ "議会開設記念日", "いい服の日", "いい肉の日" }},
            {"11-30", new List<string>(){ "カメラの日", "鏡の日", "本みりんの日" }},
            {"12-01", new List<string>(){ "映画の日", "鉄の日", "カイロの日", "世界エイズデー" }},
            {"12-02", new List<string>(){ "ビフィズス菌の日" }},
            {"12-03", new List<string>(){ "カレンダーの日", "奇術の日", "妻の日", "コードレス電話の日", "個人タクシーの日", "ひっつみの日" }},
            {"12-04", new List<string>(){ "E.T.の日" }},
            {"12-05", new List<string>(){ "アルバムの日" }},
            {"12-06", new List<string>(){ "姉の日", "音の日" }},
            {"12-07", new List<string>(){ "クリスマスツリーの日" }},
            {"12-08", new List<string>(){ "太平洋戦争開戦記念日", "有機農業の日" }},
            {"12-09", new List<string>(){ "障害者の日" }},
            {"12-10", new List<string>(){ "M&Aの日", "ベルトの日", "ごめんねの日" }},
            {"12-11", new List<string>(){ "タンゴの日", "胃腸の日" }},
            {"12-12", new List<string>(){ "バッテリーの日", "漢字の日" }},
            {"12-13", new List<string>(){ "双子の日", "ビタミンの日" }},
            {"12-14", new List<string>(){ "討ち入りの日" }},
            {"12-15", new List<string>(){ "観光バス記念日" }},
            {"12-16", new List<string>(){ "電話の日", "紙の記念日" }},
            {"12-17", new List<string>(){ "飛行機の日" }},
            {"12-18", new List<string>(){ "東京駅の日" }},
            {"12-19", new List<string>(){ "日本初飛行の日" }},
            {"12-20", new List<string>(){ "シーラカンスの日", "霧笛記念日" }},
            {"12-21", new List<string>(){ "遠距離恋愛の日", "バスケットボールの日" }},
            {"12-22", new List<string>(){ "労働組合法制定記念日" }},
            {"12-23", new List<string>(){ "テレホンカードの日" }},
            {"12-24", new List<string>(){ "学校給食記念日" }},
            {"12-25", new List<string>(){ "スケートの日" }},
            {"12-26", new List<string>(){ "プロ野球誕生の日", "雪印の日" }},
            {"12-27", new List<string>(){ "浅草仲見世記念日" }},
            {"12-28", new List<string>(){ "ディスクジョッキーの日", "身体検査の日", "シネマトグラフの日" }},
            {"12-29", new List<string>(){ "シャンソンの日", "清水トンネル貫通記念日" }},
            {"12-30", new List<string>(){ "地下鉄記念日" }},
            {"12-31", new List<string>(){ "ベルボトム・ジーンズの日" }}

        };

        string pattern = @"(1[0-2]|0?[1-9])[-月/]([1-2][0-9]|3[0-1]|0?[1-9])[日]?";


        public MainForm()
        {
            InitializeComponent();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            string text = Replace(textBox1.Text);
            textBox2.Text = text;
        }

        private string Replace(string text)
        {
            string replacedText = Regex.Replace(text, pattern, match =>
            {
                int month = int.Parse(match.Groups[1].Value);
                int day = int.Parse(match.Groups[2].Value);

                // 日付が有効か確認
                bool isValidDate = DateTime.TryParse($"{month}/{day}/2000", out DateTime parsedDate);

                // 有効な日付ならフォーマットを変更、そうでなければそのまま
                return isValidDate ? GetRandomItem(converter[parsedDate.ToString("MM-dd")]) : match.Value;
            });

            if(true)
            {
                replacedText = Regex.Replace(replacedText, "クリスマス", match =>
                {
                    return GetRandomItem(converter["12-25"]);
                });

            }

            return replacedText;

        }

        static T GetRandomItem<T>(List<T> list)
        {
            if (list == null || list.Count == 0)
            {
                throw new ArgumentException("The list cannot be null or empty.");
            }

            Random random = new Random();
            int randomIndex = random.Next(list.Count); // ランダムなインデックスを生成
            return list[randomIndex]; // ランダムな要素を返す
        }


    }
}

```
</details>


### アプリの使い方
左側のテキストボックスに入力するだけです。今回はトティ衛門に詩を書いてもらいました。今日はクリスマスなので、特別に「クリスマス」も変換しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3945200/9c48e3e9-51ab-b263-2fd0-e42c564ab700.png)