在rails上如何將電子郵件(例如[email protected])編碼爲a***[email protected]***l.c*m?替代字符並截取電子郵件使用***
我發現這個時,我試圖恢復我的密碼到我的Gmail帳戶。
在rails上如何將電子郵件(例如[email protected])編碼爲a***[email protected]***l.c*m?替代字符並截取電子郵件使用***
我發現這個時,我試圖恢復我的密碼到我的Gmail帳戶。
如果您已將電子郵件分成了address
和domain
,這會更容易。但要做到這一點它的簡單:
email = '[email protected]'
address, domain = email.split('@')
如果你不關心的第一個和最後每個標記之間的字符數:
"#{address[0]}***#{address[-1]}"
了一個**的一前@和同樣可以爲域名,但對.
字符采用分體式來完成:
working_domain = domain.split('.')
"#{working_domain[0][0]}***#{working_domain[0][-1]}.#{working_domain[1][0]}*#{working_domain[1][-1]}"
這是一個非常醜陋的方式來做到這一點,它不是非常乾燥,犯規有關字符計數照顧。你應該能夠將所有這些封裝到一個函數或3中,並使其更簡單易用。
從您在問題中提供的示例(「[email protected]」=>「a *** a @ g *** lc * m」),看起來您並不需要*以匹配替換字符的數量。
email = '[email protected]'
email.gsub(/(?<=[\w\d])[\w\d]+(?=[\w\d])/, "**")
# => "a**[email protected]**l.c**m"
打破該正則表達式,只是爲了清晰:[\w\d]+
匹配的字母數字字符的字符串,不包括一個字母如果是這樣的話,你可以用一個簡單的正則表達式替換,拆分或解析地址的必要解決這個問題左邊((?<=[\w\d])
)和右邊的另一邊((?=[\w\d])
),並用「**」替換每個匹配。
我希望這會有所幫助。
你會寫一些Ruby代碼。你有什麼嘗試? – tadman 2014-09-18 16:24:35