private775

C#: Validate IMEI

Jan 15th, 2021 (edited)
441
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.31 KB | None | 0 0
  1.         public static bool validateImeiLong(string imei)
  2.         {
  3.             if (!imeiRx.IsMatch(imei))
  4.             {
  5.                 return false;
  6.             }
  7.  
  8.             var numbers = imei.ToCharArray().Select(x => int.Parse(x.ToString())).ToArray();
  9.             var doubles = Enumerable.Range(0, 15).Select(x => x % 2 == 0 ? numbers[x] : 2 * numbers[x]).ToArray();
  10.             var doublesDigits = doubles.Select(x => x >= 10 ? x - 9 : x).ToArray(); // x - 10 (mod 10) + 1 (first digit)
  11.             var sum = doublesDigits.Sum();
  12.             var mod10 = sum % 10;
  13.  
  14.             bool isValid = false;
  15.             if (mod10 == 0) isValid = true;
  16.  
  17.             return isValid;
  18.         }
  19.         private static Regex imeiRx = new Regex(@"^\d{15}$", RegexOptions.Singleline | RegexOptions.Compiled);
  20.         public static bool IsValidImei(string imei)
  21.         {
  22.             if (!imeiRx.IsMatch(imei))
  23.             {
  24.                 return false;
  25.             }
  26.             bool isValid = false;
  27.             var digits = imei.ToCharArray().Select(x => int.Parse(x.ToString())).ToArray();
  28.             var sum = Enumerable.Range(0, 15).Select(x => x % 2 == 0 ? digits[x] : 2 * digits[x]).Select(x => x >= 10 ? x - 9 : x).Sum();
  29.             if (sum % 10 == 0) isValid = true;
  30.             return isValid;
  31.         }
  32.  
Add Comment
Please, Sign In to add comment