Skip to content

Instantly share code, notes, and snippets.

@brettsanders
Created May 16, 2013 23:05
Show Gist options
  • Save brettsanders/5595794 to your computer and use it in GitHub Desktop.
Save brettsanders/5595794 to your computer and use it in GitHub Desktop.
# Determine whether a string contains a Social Security number.
def has_ssn?(string)
string =~ /\d{3}-\d{2}-\d{4}/
end
# Return the Social Security number from a string.
def grab_ssn(string)
grab_all_ssns(string).first
end
# Return all of the Social Security numbers from a string.
def grab_all_ssns(string)
string.scan(/\d{3}-\d{2}-\d{4}/)
end
# Obfuscate all of the Social Security numbers in a string. Example: XXX-XX-4430.
def hide_all_ssns(string)
if has_ssn?(string)
ssns = grab_all_ssns(string)
ssns.each do |ssn|
ssn.gsub!(/(\d{3})-(\d{2})/, 'XXX-XX')
end
ssns.join(', ')
else
string
end
end
# Ensure all of the Social Security numbers use dashes for delimiters.
# Example: 480.01.4430 and 480014430 would both be 480-01-4430.
def format_ssns(string)
string.gsub(/(\d{3})\D*(\d{2})\D*(\d{4})/, '\1-\2-\3')
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment