public static bool validateImeiLong(string imei)
{
if (!imeiRx.IsMatch(imei))
{
return false;
}
var numbers = imei.ToCharArray().Select(x => int.Parse(x.ToString())).ToArray();
var doubles = Enumerable.Range(0, 15).Select(x => x % 2 == 0 ? numbers[x] : 2 * numbers[x]).ToArray();
var doublesDigits = doubles.Select(x => x >= 10 ? x - 9 : x).ToArray(); // x - 10 (mod 10) + 1 (first digit)
var sum = doublesDigits.Sum();
var mod10 = sum % 10;
bool isValid = false;
if (mod10 == 0) isValid = true;
return isValid;
}
private static Regex imeiRx = new Regex(@"^\d{15}$", RegexOptions.Singleline | RegexOptions.Compiled);
public static bool IsValidImei(string imei)
{
if (!imeiRx.IsMatch(imei))
{
return false;
}
bool isValid = false;
var digits = imei.ToCharArray().Select(x => int.Parse(x.ToString())).ToArray();
var sum = Enumerable.Range(0, 15).Select(x => x % 2 == 0 ? digits[x] : 2 * digits[x]).Select(x => x >= 10 ? x - 9 : x).Sum();
if (sum % 10 == 0) isValid = true;
return isValid;
}
Comments