您的位置:首页 > 编程语言 > C#

Luhn算法 C#实现 信用卡校验

2015-08-13 15:46 483 查看
public static bool IsValidCreditCard(string cardNumber)

        {

            if(cardNumber.Length!=16)

            {

                throw new Exception("卡号不是16位");

            }

            int oddSum = 0;

            int evenSum = 0;

            List<char> list = cardNumber.ToCharArray().Reverse().ToList();

            for (int i = 1; i < list.Count + 1; i++)

            {

                if (!char.IsDigit(list[i - 1]))

                {

                    throw new Exception("卡号包含非法字符");

                }

                int item = (int)char.GetNumericValue(list[i - 1]);

                if (i % 2 == 0)

                {

                    //even index

                    int num = item * 2;

                    evenSum += num > 9 ? num.ToString().ToCharArray().Sum<char>(ch => 

                    {

                        return (int)char.GetNumericValue(ch);

                    }) : num;

                }

                else

                {

                    //odd index

                    oddSum += item;

                }

            }

            return (oddSum + evenSum) % 10 == 0;

        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# 算法 信用卡