private775 icon

C#: Validate IMEI

private775 | PRO | 01/15/21 11:01:42 AM UTC (Edited) | 0 ⭐ | 719 👁️ | Never ⏰ | []
C# |

1.31 KB

|

None

|

0 👍

/

0 👎

        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