我需要验证15位数字的卡号,因为我必须生成校验和数字才能完成该数字,我该怎么做,我已经完成了以下操作; 我有一个15位数字的字符串,我想生成校验和数字以完成此操作。 以下this关于 Luhn算法的文章,我尝试过这样。
public static bool IsAllDigit(string digits)
{
if (string.IsNullOrEmpty(digits))
{
return false;
}
else
{
int numberOfChar = digits.Count();
if (numberOfChar > 0)
{
bool r = digits.All(char.IsDigit);
return r;
}
else
{
return false;
}
}
}
// 5*2 1 6*2 0 6*2 1 0*2 0 0*2 0 0*2 0 3*2 6 2*2
public static string GenerateCRC(string digits)
{
int[] firstRow = new int[15];
string CRC = string.Empty;
if (IsAllDigit(digits))
{
var array = digits.Select(ch => ch - '0').ToArray();
for (int i = 0; i < array.Length; i++)
{
if (i%2==0)
{
var temp = array[i] * 2;
if (temp > 9)
{
var arr = temp.ToString().Select(t => int.Parse(t.ToString())).ToArray();
int f = arr.Sum();
firstRow[i] = f;
}
else
{
firstRow[i] = array[i]*2;
}
}
else
{
firstRow[i] = array[i];
}
}
var sum = firstRow.Sum();
int crc = sum % 10;
CRC = crc.ToString();
}
return CRC;
}
这是实施此代码然后验证数字的最佳方法。尽管它给出了正确的结果,但是可以总结或以明智的方式完成。请提出建议。