2016-09-19 41 views
-2

我必須生成類似於ABC-4F-ABC-8D-ABC(其中:ABC是隨機3字符串,4F,8D是隨機十六進制數字)格式的唯一引用。 我是一個新的紅寶石,所以請原諒我,如果這是重複的(沒發現迄今爲止類似的smth)。我怎樣才能做到這一點?生成特殊的安全ID

+2

爲什麼這種格式?也許一個簡單的'SecureRandom.uuid'會是一個更好的選擇? – spickermann

+0

它在我的任務中被提及。我想我應該建立一些像我自己的隨機發生器一樣來構建零件,然後將它們加在一起? –

+0

歡迎使用堆棧溢出。你的問題爲時過早。您需要嘗試,然後在遇到問題時提出詳細的問題。請閱讀「[問]」,包括鏈接的頁面。一旦你的代碼遇到問題,請閱讀「[mcve]」。 「[Stack Overflow用戶需要多少研究工作?](http://meta.stackoverflow.com/a/261593/128421)」也將解釋我們的期望,當你問。 –

回答

2

您需要的所有內容都內置於Ruby中。

您可以創建一個數組,它是你的字母,然後從中挑選sample s到形成你的字符串:

ALPHA = ('A'..'Z').to_a # might also want to add numbers or lower-case letters? 
HEX = ('A'..'F').to_a + (0..9).to_a 

def generate_string(alphabet, length) 
    # pick random elements from the alphabet and concatenate 
    # until length is reached. 
    # key method is `sample` which selects a random element from 
    # an array (the alphabet, in your case) 
    # you can try it on irb like so: 
    # [1, 2, 3].sample 
end 

然後,你可以這樣做:

def generate_unique_reference 
    "#{generate_string(ALPHA, 3)}-#{generate_string(HEX, 2)}-....." 
end 

我會離開它給你完成練習(聽起來像功課,不?)

+0

謝謝)))就是這樣! –