今回はC#の正規表現を用いて、文章中に存在する日付を記念日に変換する奴を作成しました。
アプリの概要
このアプリは、ユーザーが入力したテキスト内に含まれる日付(例:01-01や1月1日)を特定の記念日に変換するものです。
例えば、以下のようなテキストを入力すると:
今日は01-01だね。
変換後は:
今日は元日だね。
といった具合に、日付を対応する記念日の名前に置き換えます。
実装のポイント
1. データ構造
記念日を管理するために、Dictionary>を使用しました。この辞書は、日付(MM-dd形式)をキーにして、対応する複数の記念日を格納しています。
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日形式を同時に処理します。
string pattern = @"(1[0-2]|0?[1-9])[-月/]([1-2][0-9]|3[0-1]|0?[1-9])[日]?";
3. 日付の有効性を確認
抽出した日付が有効かどうかを確認するために、DateTime.TryParseを使用しています。
bool isValidDate = DateTime.TryParse($"{month}/{day}/2000", out DateTime parsedDate);
4. 置換処理
最後に有効な日付の場合はランダムな記念日に置換し、無効な日付は元の値を維持します。
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]; // ランダムな要素を返す
}
コード全体
長いので折りたたみました。
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]; // ランダムな要素を返す
}
}
}
アプリの使い方
左側のテキストボックスに入力するだけです。今回はトティ衛門に詩を書いてもらいました。今日はクリスマスなので、特別に「クリスマス」も変換しました。