using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Text.RegularExpressions;
 
namespace IDCard
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
 
            //参考:http://baike.baidu.com/item/%E8%BA%AB%E4%BB%BD%E8%AF%81%E6%A0%A1%E9%AA%8C%E7%A0%81
 
            //校验长度和数字合法性
            string regular = @"\d{17}[\d|X]{1}";
            bool ret = false;
            Regex regex = new Regex(regular);
            ret = regex.IsMatch(textBox1.Text);
 
            //校验位合法性
            if (ret == true)
            {
                int sum = 0;
                int[] a = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
                string str = textBox1.Text;           
                for (int i = 0; i < 17; i++)
                {
                    sum += a[i] * (int)(str[i]-48);//0的assii码为48
                }
                int mod = sum % 11;
                int[] b = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
                char[] c = { '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' };
                char verify='0';
                for (int i=0; i<11 ;i++)
                {
                    if (mod == b[i])
                    {
                        verify = c[i];
                        break;
                    }
                }
                if ((char)str[17] == verify)
                {
                    ret = true;
                }
                else
                {
                    ret = false;
                }
            }
            
            
            MessageBox.Show(ret.ToString());
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            textBox1.Text = "34052419800101001X";
        }
    }
}

最新文章

  1. grunt自定义任务——合并压缩css和js
  2. windows server 2008 wamp安装报000F15A0解决方法
  3. 奇怪吸引子---ShimizuMorioka
  4. NET4.5之初识async与await
  5. uiatuomator提示shortMsg=java.lang.RuntimeException
  6. Effective java-泛型思维导图
  7. CoreGraphics 之CGAffineTransform仿射变换(3)
  8. MySQL最常用字符串函数
  9. Linux下创建root权限的账号osadmin
  10. MyBatis insert/delete/update 的返回值
  11. 贪心算法----区间覆盖问题(POJ2376)
  12. 创建Windows服务
  13. 用MyEclipse自带工具生成WebService客户端代码
  14. 利用salt搭建hadoop集群
  15. dubbo多网卡时,服务提供者的错误IP注册到注册中心导致消费端连接不上
  16. Netty 实现HTTP文件服务器
  17. cookie和session必须了解的东西
  18. Linux下可视化空间分析工具ncdu
  19. php redis 操作手册
  20. 精选Java面试题(二)

热门文章

  1. 如何在VS中快速导入新的源码以及文件夹
  2. NIO(一)缓冲区
  3. 转载 tomcat6下项目移植到tomcat7下出问题的解决办法
  4. 使用CreateProcess函数运行其他程序
  5. yii:高级应用程序搭建数据库的详细流程
  6. linux 命令——35 ln(转)
  7. bzoj3887: [Usaco2015 Jan]Grass Cownoisseur
  8. 2018.5.25 Oracle相关的函数命令
  9. python_14_sys_mod
  10. Bootstrap 弹出框(Popover)插件