# . 的意思是任意一個字元
# q(?=u) 會找出所有的 q,如果符合 q 後面接的是 u 的話
# 上述的原文:q(?=u) matches a q that is followed by a u
# .(?=….)的意思:找出任何 1 個字元,它的後面有接任何 4 個字元
# 上述轉換成人話:選取右邊數過來第 5 個字(含)以前的所有數字,因為最後4個字的每個字元右邊一定都不足4個字
# 幫信用卡號打馬賽克
def maskify(card_number)
# 實作內容
end
RSpec.describe do
it "幫信用卡號打馬賽克" do
expect(maskify('4556364607935616')).to eq '############5616'
expect(maskify('1')).to eq '1'
expect(maskify('11111')).to eq '#1111'
end
end
def maskify(card_number)
if card_number.length < 5
card_number
else
last_four = card_number[-4..-1]
head = card_number[0..-5]
head = head.chars.map { |n| n = "#" }.join("")
"#{head}#{last_four}"
end
end
def maskify(card_number)
card_number.gsub(/.(?=....)/, "#")
end