您的位置:首页 > 其它

判断银行卡号是否正确

2016-11-23 14:10 411 查看
public class func checkCard(number: String) -> Bool {
var oddSum = 0
var evenSum = 0
var allSum = 0
let cardNumberLength = number.lengthOfBytes(using: String.Encoding.utf8)
let lastIndex = number.index(number.endIndex, offsetBy: -1)
let lastNum = Int(number.substring(from: lastIndex))!
let num = number.substring(to: lastIndex)

for i in (1...cardNumberLength-1).reversed() {
let start = num.index(num.startIndex, offsetBy: i-1)
let end = num.index(num.startIndex, offsetBy: i)
var tempNumber = Int(num.substring(with: start..<end))!
if cardNumberLength % 2 == 1 {
if (i % 2 == 0) {
tempNumber *= 2
if tempNumber >= 10 {
tempNumber -= 9
}
evenSum += tempNumber
}else {
oddSum += tempNumber
}
}else {
if (i % 2 == 1) {
tempNumber *= 2
if tempNumber >= 10 {
tempNumber -= 9
}
evenSum += tempNumber
}else {
oddSum += tempNumber
}
}
}

allSum = oddSum + evenSum
allSum += lastNum
if allSum % 10 == 0 {
return true
}
return false
}
测试了农行和招商银行的银行卡,是可以通过的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: