public bool IsValid()
        {
            if (!HasMadatoryFields())
            {
                return(false);
            }

            if (!int.TryParse(Byr, out var byr))
            {
                return(false);
            }

            if (byr < 1920 || byr > 2002)
            {
                return(false);
            }

            if (!int.TryParse(Iyr, out var iyr))
            {
                return(false);
            }

            if (iyr < 2010 || iyr > 2020)
            {
                return(false);
            }

            if (!int.TryParse(Eyr, out var eyr))
            {
                return(false);
            }

            if (eyr < 2020 || eyr > 2030)
            {
                return(false);
            }

            if (!Hgt.EndsWith("cm") && !Hgt.EndsWith("in"))
            {
                return(false);
            }

            if (Hgt.EndsWith("cm"))
            {
                if (!int.TryParse(Hgt.Replace("cm", ""), out var hgt))
                {
                    return(false);
                }
                if (hgt < 150 || hgt > 193)
                {
                    return(false);
                }
            }

            if (Hgt.EndsWith("in"))
            {
                if (!int.TryParse(Hgt.Replace("in", ""), out var hgt))
                {
                    return(false);
                }
                if (hgt < 59 || hgt > 76)
                {
                    return(false);
                }
            }

            var hairRegEx = new Regex("#[a-z0-9]{6}");

            if (!hairRegEx.Match(Hcl).Success)
            {
                return(false);
            }


            string[] eyeColours = new string[] {
                "amb", "blu", "brn", "gry", "grn", "hzl", "oth"
            };
            if (!eyeColours.Contains(Ecl.ToLower()))
            {
                return(false);
            }

            if (Pid.Length != 9)
            {
                return(false);
            }

            if (!int.TryParse(Pid, out var ignored))
            {
                return(false);
            }

            return(true);
        }
Beispiel #2
0
        public bool IsValidStrict()
        {
            if (string.IsNullOrWhiteSpace(Eyr) ||
                string.IsNullOrWhiteSpace(Pid) ||
                string.IsNullOrWhiteSpace(Hcl) ||
                string.IsNullOrWhiteSpace(Byr) ||
                string.IsNullOrWhiteSpace(Iyr) ||
                string.IsNullOrWhiteSpace(Ecl) ||
                string.IsNullOrWhiteSpace(Hgt))
            {
                return(false);
            }

            if (!int.TryParse(Byr, out var byr))
            {
                return(false);
            }

            if (byr < 1920 || byr > 2002)
            {
                return(false);
            }

            if (!int.TryParse(Iyr, out var iyr))
            {
                return(false);
            }

            if (iyr < 2010 || iyr > 2020)
            {
                return(false);
            }

            if (!int.TryParse(Eyr, out var eyr))
            {
                return(false);
            }

            if (eyr < 2020 || eyr > 2030)
            {
                return(false);
            }

            if (!Hgt.EndsWith("cm") && !Hgt.EndsWith("in"))
            {
                return(false);
            }

            if (Hgt.EndsWith("cm"))
            {
                if (!int.TryParse(Hgt.Replace("cm", ""), out var hgt))
                {
                    return(false);
                }
                if (hgt < 150 || hgt > 193)
                {
                    return(false);
                }
            }

            if (Hgt.EndsWith("in"))
            {
                if (!int.TryParse(Hgt.Replace("in", ""), out var hgt))
                {
                    return(false);
                }
                if (hgt < 59 || hgt > 76)
                {
                    return(false);
                }
            }

            if (Hcl.Length != 7 || !Hcl.StartsWith("#"))
            {
                return(false);
            }

            const string validHair = "0123456789abcdef";

            for (var i = 1; i < Hcl.Length; i++)
            {
                if (!validHair.Contains(Hcl[i].ToString().ToLower()))
                {
                    return(false);
                }
            }

            string[] validEyes = new string[] {
                "amb", "blu", "brn", "gry", "grn", "hzl", "oth"
            };

            if (!validEyes.Contains(Ecl.ToLower()))
            {
                return(false);
            }

            if (Pid.Length != 9)
            {
                return(false);
            }

            if (!int.TryParse(Pid, out var temp1))
            {
                return(false);
            }

            return(true);
        }