2011-12-25 6 views
0

私はルビーと正規表現の初心者です。私はこの関数をPHPで書いています。私はそれをRubyに書き直す必要があります。このPHP関数をルビに書き換えるには?

function date_number_id($id_number) { 
    if (preg_match('~^([0-9]{2})([0-9]{2})([0-9]{2})/([0-9]{3,4})$~', $id_number, $match)) { 
     return (strlen($match[4]) < 4 || $match[1] >= 54 ? "19" : "20") . "$match[1]-" . sprintf("%02d", $match[2] % 50) . "-$match[3]"; 
    } 
    else 
    { 
     return false; 
    } 
} 

私に教えてもらえますか?

多くの感謝!

EDIT:これは、識別番号から誕生日を印刷する機能です。入力は、例えば、次のとおりです。890807/5089

+0

PHPには参加していないが、まだ助けてくれる人には、入出力を提供することが常に役立ちます。 –

+0

私の質問を更新しました。 – user984621

+0

Hm - その例は一致しません - 正規表現の最初の6文字の後にスラッシュを必要としています... – Amadan

答えて

1

私は何か...

def date_number_id(id_number) 
    match = /^([0-9]{2})([0-9]{2})([0-9]{2})\/([0-9]{3,4})$/.match(id_number) 
    if match 
    return "#{match[4].to_i < 4 || match[1].to_i >= 54 ? '19' : '20'}#{match[1]}-#{sprintf("%02d", match[2].to_i % 50)}-#{match[3]}" 
    else 
    return false 
    end 
end 

を逃していない限り、私はPHPへのマッピングは明白だと思うが、それがそうである理由を理解していない何かがあるのならば、お願いします。

関連する問題