• ベストアンサー

日付を固定長にしたい

早速ですが、 ”15日分”のように始まるフィールドを持つレコードがあります。 このレコードを抽出基準日付(2桁、例えば”09”)で抽出したいのですが、 抜きたいレコードの日付は1桁の時には前にゼロがありません。 (例えば ”9日分”の如く) どのように考えればよいでしょうか。 抽出基準日付の2桁を1桁にするということは別の理由で出来ません。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

全角半角、15と9と09が入り乱れてて、状況が今一つはっきりしません。 if ( レコード =~ /抽出基準日付を使ったパターン/ ) { 抽出 } みたいなことをしたい、ということでよろしいでしょうか? 入力は現行のままにしておいて、判定時に都合のいいように変換するのがてっとり早いと思います。 # 数値に揃える $rec_h = レコードを半角化 ; # 必要ならば if ( $rec_h = /^(\d+)/ ) { # 先頭の数字を抽出 $rec_date = $1 ; #抽出した数字 } else {エラー;} $date = 抽出基準日付 ; $date =~ s/^0//; # 先頭の0を取り除く if ( $rec_date == $date ) { 抽出 } # 数値として比較 # 文字列に揃える $rec_h = レコードを半角化 ; # 必要ならば if ( $rec_h =~ /^(\d+)/ ) { # 先頭の数字を抽出 $rec_date = sprintf( "%02d",$1) ; # sprintfで0付き2桁に } else {エラー;} if ( $rec_date eq 抽出基準日付 ) { 抽出 } #文字列として比較

nagahaha
質問者

お礼

お礼が遅くなりました。 正規表現のメタ文字を使い、 1文字の数字を確認、その時には前に0を付与し2桁に桁あわせをして比較しました。 お陰様でうまく行きました。 お世話になりました。

関連するQ&A

専門家に質問してみよう