最後の 4 桁を除くすべてに星印が付けられたクレジット カード番号を含む注文確認文字列がある Rails プロジェクトに取り組んでいます。文字列置換を行う適切な方法は何ですか?
これを取得する操作は何ですか
credit_card_number = "1111111111111111"
これに?
credit_card_number = "************1111"
ありがとう、
賢司
最後の 4 桁を除くすべてに星印が付けられたクレジット カード番号を含む注文確認文字列がある 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")