public void Add(char character, int index) { if (_state != State.PossibleCard) { return; } if (!_validCharacters.Contains(character)) { Reset(); return; } if (!Char.IsNumber(character)) { return; } if (NumberOfDigits >= 16) { if (NumberOfDigits > 16) { Reset(); } else { NumberOfDigits++; return; } } NumberOfDigits++; if (_initialNumberOfDigits > 0) { return; } _checkSumValue += _type.GetCheckValue(character); _indexes.Add(index); _type = _type.Next(); if (NumberOfDigits >= 14) { if (IsCreditCard()) { _matchingCardLengths.Add(NumberOfDigits); } } }
public void Reset() { _indexes.Clear(); _type = CheckSumType.Even; _state = State.PossibleCard; NumberOfDigits = 0; _matchingCardLengths.Clear(); _initialNumberOfDigits = 0; }