電子書籍の厳選無料作品が豊富!

早速ですが、

”15日分”のように始まるフィールドを持つレコードがあります。
このレコードを抽出基準日付(2桁、例えば”09”)で抽出したいのですが、
抜きたいレコードの日付は1桁の時には前にゼロがありません。
(例えば ”9日分”の如く)

どのように考えればよいでしょうか。
抽出基準日付の2桁を1桁にするということは別の理由で出来ません。
宜しくお願いします。

A 回答 (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 抽出基準日付 ) { 抽出 } #文字列として比較
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/03/27 20:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!