gpt4 book ai didi

swift - Swift 中的土耳其身份证号码验证

转载 作者:可可西里 更新时间:2023-11-01 00:38:43 27 4
gpt4 key购买 nike

如何确保给定的文本是土耳其身份证号码?我看过 js version herephthon version here

土耳其身份验证不仅检查其数字,它还有一些其他功能。让我更清楚一点,它是数字,有 11 位数字。例如假设前 9 位数字用 d 表示,最后一个数字用 c 表示:

Identity Number = d1 d2 d3 d4 d5 d6 d7 d8 d9 c1 c2

第10位必须是,

c1 = ( (d1 + d3 + d5 + d7 + d9) * 7 - (d2 + d4 + d6 + d8) ) mod10

必须是第 11 个

c2 = ( d1 + d2 + d3 + d4 + d5 + d6 + d7 + d8 + d9 + c1 ) mod10

它永远不会以“0”开头例如,“87836910956”是土耳其身份证号码。

最佳答案

只是一个简单的实现:

func verifyNumber(_ number: String) -> Bool {
let pattern = "^[1-9][0-9]{10}$"

// test that the length is correct and it's composed from digits
guard number.range(of: pattern, options: .regularExpression) != nil else {
return false
}

// convert characters to numbers
let digits: [Int] = number.compactMap { Int(String($0)) }
// split digits and check digits
let d = Array(digits.prefix(9))
let c = Array(digits.suffix(2))

// calculate check digits
let c1 = ((d[0] + d[2] + d[4] + d[6] + d[8]) * 7 - (d[1] + d[3] + d[5] + d[7])) % 10
let c2 = (d.reduce(0, +) + c1) % 10

// validate check digits
return c[0] == c1 && c[1] == c2
}

关于swift - Swift 中的土耳其身份证号码验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53554304/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com