Working on a rails project where there's an order confirmation string with a credit card number with all but the last four digits starred out. What's the proper way to do a string substitution?
What's the operation to get this
credit_card_number = "1111111111111111"
to this?
credit_card_number = "************1111"
Thanks,
Kenji
Here's a regex approach:
x.gsub!(/.(?=....)/, '*')
Here's an approach using string indexing:
x = '*' * (x.size - 4) + x[-4, 4]
If you're using ActiveMerchant, ActiveMerchant::Billing::CreditCard
has an instance method called display_number
which does this e.g. XXXX-XXXX-XXXX-4338
If you're not, copy 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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With