我必须找到一种使后四个数字字符匿名的方法。出现电话号码字符串,例如“ +36 6 41 88 75 22”,我希望我的代码输出“ +36 6 41 88 XX XX”。
phoneNumber = "+36 6 41 88 75 22"
我找到的最接近我想要的选择的正则表达式是:/\d.{4}$/
这很方便,因为lastFour = phone.scan(/\d.{4}$/).join
等于“ 75 22”(包括空格)。
现在我想用“ X”代替所有数字(而不是空格!),但是
phoneNumber.gsub(/\d.{4}$/, "X")
输出“ +36 6 41 88 X”,我希望我的代码输出“ +36 6 41 88 XX XX”。
我也尝试了以下麻烦的解决方案:
phoneNumber = "+36 6 41 88 75 22"
def anonymizer(phone)
lastFour = phone.scan(/\d.{4}$/).join
anonFour = lastFour.chars
anonFour.each do |digit|
digit.gsub(/[0-9]/, "X")
end
puts "attempted transform #{anonFour}"
phone.gsub(lastFour, anonFour.join)
end
phoneyNumber = anonymizer(phoneNumber)
puts phoneyNumber
无济于事,因为它按原样返回数字(“ +36 6 41 88 75 22”而不是“ +36 6 41 88 XX XX”)]
您可以使用
phoneNumber = phoneNumber.gsub(/\d(?=(?:\D*\d){0,3}\D*\z)/, 'X')