在有一個訂單確認字符串與一個信用卡號碼,除了最後四位數字主演外的一個軌道項目的工作。什麼是字符串替換的正確方法?在信用卡號碼的紅寶石字符串操作
是什麼讓這個
credit_card_number = "1111111111111111"
這個操作?
credit_card_number = "************1111"
感謝,
賢治
在有一個訂單確認字符串與一個信用卡號碼,除了最後四位數字主演外的一個軌道項目的工作。什麼是字符串替換的正確方法?在信用卡號碼的紅寶石字符串操作
是什麼讓這個
credit_card_number = "1111111111111111"
這個操作?
credit_card_number = "************1111"
感謝,
賢治
如果您使用ActiveMerchant:
x.gsub!(/.(?=....)/, '*')
使用字符串索引這裏有一個方法, ActiveMerchant::Billing::CreditCard
有一個名爲display_number
的實例方法, XXXX-XXXX-XXXX-4338
如果你不是,複製activemerchant:
def last_digits(number)
number.to_s.length <= 4 ? number : number.to_s.slice(-4..-1)
end
def mask(number)
"XXXX-XXXX-XXXX-#{last_digits(number)}"
end
credit_card_number = "1111111111111111"
display_number = mask credit_card_number
這裏有一個正則表達式的方法:
x = '*' * (x.size - 4) + x[-4, 4]
+1很乾淨的解決方案。 – 2014-02-05 22:20:40
我真的很喜歡第一個。謝謝! – 2016-08-01 07:51:16
你可以使用Ruby的gsub
方法和正則表達式來隱藏一些賬號串的數字:
hidenumber = "123-123-1234"
hidenumber.gsub(/(\d{3}-\d{3})/,"xxx-xxx")
非常感謝史蒂夫! 我正在使用Active Merchant,但由於某種原因,我的訂單對象無法訪問顯示編號方法。儘管如此,你的方法仍然有效。謝謝您的幫助! – 2009-12-15 01:14:37
沒有Probs Kenji!這是因爲它是'ActiveMerchant :: Billing :: CreditCard'的實例方法,不是你的模型。您可以在保存之前使用回調來更新屬性,然後它將持久可用。 – 2009-12-15 01:28:39
很高興知道。如果有必要,我一定會這樣做。 – 2009-12-15 01:57:58