2011-12-25 27 views
0

我是ruby和正則表達式的新手,我用PHP編寫了這個函數,我需要將它重寫爲Ruby。如何將這個PHP函數重寫爲ruby?

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; 
    } 
} 

請問您能幫我嗎?

非常感謝!

編輯:這是一個從身份證號碼打印生日的功能。輸入是例如:890807/5089

+0

它總是有助於提供一些輸入/輸出的人誰不進入PHP,但仍願意幫助。 – 2011-12-25 11:34:26

+0

我更新了我的問題。 – user984621 2011-12-25 11:40:44

+0

嗯 - 這個例子不匹配 - 你需要在你的正則表達式中的前6個字符之後的斜線... – Amadan 2011-12-25 11:44:35

回答

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是顯而易見的,但如果有什麼你不理解爲什麼是這樣,問。

相關問題