在一个 Rails 项目中工作,其中有一个带有信用卡号的订单确认字符串,除了最后四位数字之外的所有数字都被星标了。进行字符串替换的正确方法是什么?
得到这个的操作是什么
credit_card_number = "1111111111111111"
到这个?
credit_card_number = "************1111"
谢谢,
健二
在一个 Rails 项目中工作,其中有一个带有信用卡号的订单确认字符串,除了最后四位数字之外的所有数字都被星标了。进行字符串替换的正确方法是什么?
得到这个的操作是什么
credit_card_number = "1111111111111111"
到这个?
credit_card_number = "************1111"
谢谢,
健二
这是一个正则表达式方法:
x.gsub!(/.(?=....)/, '*')
这是一种使用字符串索引的方法:
x = '*' * (x.size - 4) + x[-4, 4]
如果您使用的是 ActiveMerchant,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
您可以使用 Ruby 的gsub
方法和正则表达式来隐藏帐号字符串中的一些数字:
hidenumber = "123-123-1234"
hidenumber.gsub(/(\d{3}-\d{3})/,"xxx-xxx")