Swift 4.0 判断身份证号码

项目中有用到验证身份证号的,网上搜了一些,但是在Swift 4.0 以上版本会报错且不可用,于是修改了一些报错问题,如有更好建议,请多多指教。

原先参考版本:http://blog.csdn.net/dage521love/article/details/51683198

/*!验证身份证- returns: true/false*/func checkIdentityCardNumber(_ number: String) -> Bool {//判断位数if number.count != 15 && number.count != 18 {return false}var carid = numbervar lSumQT = 0//加权因子let R = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]//校验码let sChecker: [Int8] = [49,48,88, 57, 56, 55, 54, 53, 52, 51, 50]//将15位身份证号转换成18位let mString = NSMutableString.init(string: number)if number.count == 15 {mString.insert("19", at: 6)var p = 0let pid = mString.utf8Stringfor i in 0...16 {let t = Int(pid![i])p += (t - 48) * R[i]}let o = p % 11let stringContent = NSString(format: "%c", sChecker[o])mString.insert(stringContent as String, at: mString.length)carid = mString as String}let cStartIndex = carid.startIndexlet cEndIndex = carid.endIndexlet index = carid.index(cStartIndex, offsetBy: 2)//判断地区码let sProvince = String(carid[cStartIndex.. Bool {return 0 <= c && c <= 9}for i in 0...18 {let id = Int(paperId[i])if isDigit(c: id) && !(88 == id || 120 == id) && 17 == i {return false}}//验证最末的校验码for i in 0...16 {let v = Int(paperId[i])lSumQT += (v - 48) * R[i]}if sChecker[lSumQT%11] != paperId[17] {return false}return true}func areaCodeAt(_ code: String) -> Bool {var dic: [String: String] = [:]dic["11"] = "北京"dic["12"] = "天津"dic["13"] = "河北"dic["14"] = "山西"dic["15"] = "内蒙古"dic["21"] = "辽宁"dic["22"] = "吉林"dic["23"] = "黑龙江"dic["31"] = "上海"dic["32"] = "江苏"dic["33"] = "浙江"dic["34"] = "安徽"dic["35"] = "福建"dic["36"] = "江西"dic["37"] = "山东"dic["41"] = "河南"dic["42"] = "湖北"dic["43"] = "湖南"dic["44"] = "广东"dic["45"] = "广西"dic["46"] = "海南"dic["50"] = "重庆"dic["51"] = "四川"dic["52"] = "贵州"dic["53"] = "云南"dic["54"] = "西藏"dic["61"] = "陕西"dic["62"] = "甘肃"dic["63"] = "青海"dic["64"] = "宁夏"dic["65"] = "新疆"dic["71"] = "台湾"dic["81"] = "香港"dic["82"] = "澳门"dic["91"] = "国外"if (dic[code] == nil) {return false;}return true;}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部