16 - checking a credit card checksum.rb
来自「O Reilly Ruby Cookbook source code」· RB 代码 · 共 47 行
RB
47 行
require 'rubygems'require 'creditcard''5276 4400 6542 1319'.creditcard? # => true'5276440065421313'.creditcard? # => false1276440065421319.creditcard? # => false#---5276440065421313.creditcard_type # => "mastercard"#---module CreditCard def creditcard? numbers = self.to_s.gsub(/[^\d]+/, '').split(//) checksum = 0 0.upto numbers.length do |i| weight = numbers[-1*(i+2)].to_i * (2 - (i%2)) checksum += weight % 9 end return numbers[-1].to_i == 10 - checksum % 10 endendclass String include CreditCardendclass Integer include CreditCardend'5276 4400 6542 1319'.creditcard? # => true#---numbers = '5276 4400 6542 1319'.gsub(/[^\d]+/, '').split(//)# => ["5", "2", "7", "6", "4", "4", "0", "0", # => "6", "5", "4", "2", "1", "3", "1", "9"]#---checksum = 00.upto numbers.length do |i| weight = numbers[-1*(i+2)].to_i * (2 - (i%2)) checksum += weight % 9endchecksum # => 51#---numbers[-1].to_i == 10 - checksum % 10 # => true#---
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?