4

最後の 4 桁を除くすべてに星印が付けられたクレジット カード番号を含む注文確認文字列がある Rails プロジェクトに取り組んでいます。文字列置換を行う適切な方法は何ですか?

これを取得する操作は何ですか

credit_card_number = "1111111111111111"

これに?

credit_card_number = "************1111"

ありがとう、

賢司

4

3 に答える 3

17

正規表現のアプローチは次のとおりです。

x.gsub!(/.(?=....)/, '*')

文字列インデックスを使用したアプローチを次に示します。

x = '*' * (x.size - 4) + x[-4, 4]
于 2009-12-15T00:52:18.603 に答える
9

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
于 2009-12-15T00:53:37.077 に答える
2

Ruby のgsubメソッドと正規表現を使用して、口座番号文字列の一部の数字を非表示にすることができます。

hidenumber = "123-123-1234"
hidenumber.gsub(/(\d{3}-\d{3})/,"xxx-xxx")
于 2016-11-22T01:57:06.110 に答える