易语言验证十八位身份证号码是否正确的代码

常量数据表

.版本 2

.常量 行政划位码2, "<文本长度: 20409>", , 各区身份证前六位

.常量 行政划位码1, "<文本长度: 29990>", , 各区身份证前六位

验证十八位身份证号的代码

.版本 2

.程序集 程序集1

.子程序 验证身份证号, 逻辑型

.参数 十八位身份证号, 文本型

.局部变量 系数, 整数型, , "0"

.局部变量 余数表, 整数型, , "0"

.局部变量 位, 整数型

.局部变量 和, 整数型

.局部变量 校验码, 文本型

.局部变量 i, 整数型

.局部变量 temp, 整数型

.局部变量 临时位, 文本型

系数 = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 }

余数表 = { 1, 0, -1, 9, 8, 7, 6, 5, 4, 3, 2 } ' -1代表X

.如果真 (取文本长度 (十八位身份证号) ≠ 18)

返回 (假)

.如果真结束

.计次循环首 (17, i)

临时位 = 取文本中间 (十八位身份证号, i, 1)

.如果 (临时位 ≥ “0” 且 临时位 ≤ “9”) ' 前17位有非数字位,直接返回假

位 = 到整数 (临时位)

和 = 和 + 位 × 系数 [i]

.否则

返回 (假)

.如果结束

.计次循环尾 ()

temp = 余数表 [和 % 11 + 1]

校验码 = 选择 (temp = -1, “X”, 到文本 (temp))

返回 (选择 (校验码 = 取文本右边 (十八位身份证号, 1), 真, 假))

.子程序 取身份证出生年月, 文本型

.参数 十八位身份证号, 文本型

.局部变量 出生年月, 文本型

.局部变量 temp, 日期时间型

.如果真 (取文本长度 (十八位身份证号) ≠ 18)

返回 (“”)

.如果真结束

出生年月 = 取文本中间 (十八位身份证号, 7, 8)

temp = 到时间 (出生年月 + “000000”)

.如果真 (temp = 指定时间 (100, 1, 1, , , ))

返回 (“”)

.如果真结束

返回 (取文本左边 (出生年月, 4) + “-” + 取文本中间 (出生年月, 5, 2) + “-” + 取文本右边 (出生年月, 2))

.子程序 取身份证号码性别信息, 文本型

.参数 十八位身份证号, 文本型

.局部变量 性别码, 整数型

.局部变量 temp, 文本型

.如果真 (取文本长度 (十八位身份证号) ≠ 18)

返回 (“”)

.如果真结束

temp = 取文本中间 (十八位身份证号, 17, 1)

.如果真 (temp < “0” 或 temp > “9”)

返回 (“”)

.如果真结束

性别码 = 到整数 (temp)

返回 (选择 (性别码 % 2 = 0, “女”, “男”))

.子程序 取身份证行政区位码信息, 文本型

.参数 十八位身份证号, 文本型

.局部变量 行政区位码, 文本型

.局部变量 行政区位码表, 文本型, , "0"

.局部变量 i, 整数型

.局部变量 temp, 文本型, , "0"

.局部变量 地区值, 文本型

行政区位码 = 取文本左边 (十八位身份证号, 6)

行政区位码表 = 分割文本 (#行政划位码1, #换行符, )

.计次循环首 (取数组成员数 (行政区位码表), i)

.如果真 (行政区位码 = 取文本左边 (行政区位码表 [i], 6))

temp = 分割文本 (行政区位码表 [i], “,”, )

地区值 = temp [2]

跳出循环 ()

.如果真结束

.计次循环尾 ()

.如果真 (地区值 = “”)

行政区位码表 = 分割文本 (#行政划位码2, #换行符, )

.计次循环首 (取数组成员数 (行政区位码表), i)

.如果真 (行政区位码 = 取文本左边 (行政区位码表 [i], 6))

temp = 分割文本 (行政区位码表 [i], “,”, )

地区值 = temp [2]

跳出循环 ()

.如果真结束

.计次循环尾 ()

.如果真结束

返回 (地区值)

启动窗口程序集

.版本 2

.程序集 窗口程序集_启动窗口

.子程序 __启动窗口_创建完毕

显示结果编辑框.加入文本 (到文本 (验证身份证号 (“420822199511087728”)) + “,” + 到文本 (取身份证出生年月 (“420822199511087728”)) + “,” + 到文本 (取身份证号码性别信息 (“420822199511087728”)) + “,” + 到文本 (取身份证行政区位码信息 (“420822199511087728”)))

运行结果:

总结

以上是 易语言验证十八位身份证号码是否正确的代码 的全部内容, 来源链接: utcz.com/z/353022.html

回到顶部