身份证号码验证 C#

输入18位身份证号码, 提示号码是否是有效的,如果无效则建议一个有效身份证。

注: 前17位必须正确才能建议一个准确的ID 号。

        static void Main(string[] args)
        {
            bool isValid = true;
            string Id = "171126199702163111";
            char[] cId = Id.ToCharArray();
            if (cId.Length != 18)
                return;
            int sum = 0;
            int iter=18;

            for (int i = 0; i < cId.Length-1; i++)
            {
                int c = Int32.Parse(cId[i].ToString());
                int weight=Int32.Parse (Math.Pow(2, iter - 1).ToString ()) % 11;               
                sum += c * weight;
                iter--;
            }
            sum %= 11;
            int output = Int32.Parse(sum.ToString ());
            char validate = GetVerifyCode(output);

            if (validate == cId[cId.Length - 1])
            {
                isValid = true;
            }
            else
                isValid = false;

            StringBuilder recommendId = new StringBuilder();
            if (!isValid)
            {
                for (int i = 0; i < cId.Length - 1; i++)
                {
                    recommendId.Append(cId[i]);
                }
                recommendId.Append(validate);
            }
            else
            {
                recommendId.Append("your input is valid");
            }
            Console.WriteLine(isValid.ToString ());
            Console.WriteLine("recommend {0}",recommendId .ToString ());
        }

        static char GetVerifyCode(int output)
        {
            switch (output)
            {
                case 0: return '1'; 
                case 1: return '0'; 
                case 2: return 'X';
                case 3: return '9';
                case 4: return '8';
                case 5: return '7';
                case 6: return '6';
                case 7: return '5';
                case 8: return '4';
                case 9: return '3';
                case 10: return '2';
                default : return 'X';
            }
        }
原文地址:https://www.cnblogs.com/qixue/p/3121638.html