/// <summary> /// Checks if a string value is a valid CPF representation /// </summary> /// <param name="value">a CPF string to be checked</param> /// <param name="punctuation">the punctuation setting to /// how validation must be handled</param> /// <returns>true if CPF string is valid; false otherwise</returns> internal static bool Validate(string value, CpfPunctuation punctuation) { if (StringHelper.IsNullOrWhiteSpace(value)) { return(false); } if (!Regex.IsMatch(value, CpfHelper.regexValidations[punctuation])) { return(false); } value = CpfHelper.Sanitize(value); if (CpfHelper.IsSameDigit(value)) { return(false); } var inputDigit1 = int.Parse( value.Substring(9, 1), CultureInfo.InvariantCulture); var inputDigit2 = int.Parse( value.Substring(10, 1), CultureInfo.InvariantCulture); var calcDigit1 = CpfHelper.CreateChecksum(value.Substring(0, 9)); var calcDigit2 = CpfHelper.CreateChecksum(value.Substring(0, 10)); return(inputDigit1 == calcDigit1 && inputDigit2 == calcDigit2); }
/// <summary> /// Initializes a new instance of the <see cref="Cpf"/> class. /// </summary> /// <param name="value">a valid CPF string.</param> /// <param name="punctuation">the punctuation setting to /// how validation must be handled.</param> public Cpf(string value, CpfPunctuation punctuation) { if (StringHelper.IsNullOrWhiteSpace(value)) { throw new ArgumentException("O CPF não pode ser nulo ou branco"); } if (!CpfHelper.Validate(value, punctuation)) { throw new ArgumentException("O CPF não é válido"); } this.parsedValue = CpfHelper.Sanitize(value); this.Punctuation = punctuation; }
/// <summary> /// Completes a partial CPF string by appending a valid checksum trailing /// </summary> /// <param name="value">a partial CPF string with or without punctuation</param> /// <returns>a CPF string with a valid checksum trailing</returns> internal static string Complete(string value) { if (StringHelper.IsNullOrWhiteSpace(value)) { throw new ArgumentException("O CPF é inválido"); } value = CpfHelper.Sanitize(value); if (!Regex.IsMatch(value, @"\d{9}")) { throw new ArgumentException("O CPF é inválido"); } int digit1 = CpfHelper.CreateChecksum(value); int digit2 = CpfHelper.CreateChecksum(value + digit1.ToString()); return(value + digit1.ToString() + digit2.ToString()); }
/// <summary> /// Completes a partial CPF string by appending a valid checksum trailing. /// </summary> /// <param name="value">a partial CPF string /// with or without punctuation.</param> /// <returns>a CPF string with a valid checksum trailing.</returns> public static string Complete(string value) { return(CpfHelper.Complete(value)); }
/// <summary> /// Checks if a string value is a valid CPF representation. /// </summary> /// <param name="value">a CPF string to be checked.</param> /// <param name="punctuation">the punctuation setting to /// how validation must be handled.</param> /// <returns>true if CPF string is valid; otherwise, false.</returns> public static bool Validate(string value, CpfPunctuation punctuation) { return(CpfHelper.Validate(value, punctuation)); }
/// <summary> /// Checks if a string value is a valid CPF representation. /// </summary> /// <param name="value">a CPF string to be checked.</param> /// <returns>true if CPF string is valid; false otherwise.</returns> public static bool Validate(string value) { return(CpfHelper.Validate(value, CpfPunctuation.Loose)); }