public void AddEntry(String ban, bankAccountNumberFormat mode = bankAccountNumberFormat.doubleSeparation, Boolean onlyUnique = true)
        {
            bankAccountNumber ban_instance = new bankAccountNumber();

            ban_instance.SetFromString(ban, mode);

            AddEntry(ban_instance, onlyUnique);
        }
        /// <summary>
        /// To the string.
        /// </summary>
        /// <param name="useLeadingZeros">if set to <c>true</c> [use leading zeros].</param>
        /// <param name="mode">The mode.</param>
        /// <returns></returns>
        public String ToString(Boolean useLeadingZeros, bankAccountNumberFormat mode, StringBuilder sb = null)
        {
            if (sb == null)
            {
                sb = new StringBuilder();
            }

            ToString(sb, useLeadingZeros, mode);

            return(sb.ToString());
        }
        /// <summary>
        /// To the string.
        /// </summary>
        /// <param name="useLeadingZeros">if set to <c>true</c> [use leading zeros].</param>
        /// <param name="mode">The mode.</param>
        /// <returns></returns>
        public String ToString(Boolean useLeadingZeros = true, bankAccountNumberFormat mode = bankAccountNumberFormat.doubleSeparation)
        {
            var sb = new StringBuilder();

            foreach (var ban in this)
            {
                if (ban.accountNumber != 0)
                {
                    ban.ToString(sb, useLeadingZeros, mode);
                    sb.AppendLine();
                }
            }

            return(sb.ToString());
        }
        public void ToString(StringBuilder sb, Boolean useLeadingZeros = true, bankAccountNumberFormat mode = bankAccountNumberFormat.doubleSeparation)
        {
            if (accountNumber == 0)
            {
                return;
            }

            StringBuilder sent_sb = sb;

            if (useLeadingZeros && mode == bankAccountNumberFormat.doubleSeparation)
            {
                if (!fullFormat.isNullOrEmpty())
                {
                    sb.Append(fullFormat);
                    return;
                }
                sb = new StringBuilder();
            }

            sb.Append(bankPrefix.ToString("D3"));

            if (mode == bankAccountNumberFormat.singleSeparation || mode == bankAccountNumberFormat.doubleSeparation)
            {
                sb.Append("-");
            }

            if (useLeadingZeros)
            {
                sb.Append(accountNumber.ToString("D13"));
            }
            else
            {
                sb.Append(accountNumber.ToString());
            }

            if (mode == bankAccountNumberFormat.doubleSeparation)
            {
                sb.Append("-");
            }

            sb.Append(controlNumber.ToString("D2"));

            if (useLeadingZeros && mode == bankAccountNumberFormat.doubleSeparation)
            {
                fullFormat = sb.ToString();
                sent_sb.Append(fullFormat);
            }
        }
 public bankAccountNumber(String input, bankAccountNumberFormat format = bankAccountNumberFormat.unknown)
 {
     SetFromString(input, format);
 }
        public void SetFromString(String input, bankAccountNumberFormat mode = bankAccountNumberFormat.doubleSeparation)
        {
            List <String> parts     = new List <string>();
            String        rightPart = "";
            String        cntPart   = "";

            if (input.Length < 6)
            {
                throw new ArgumentException("Input string [" + input + "] cant be interpreted as bank account number!");
            }

            switch (mode)
            {
            case bankAccountNumberFormat.doubleSeparation:
                parts.AddRange(input.Split('-'));
                break;

            case bankAccountNumberFormat.noSeparation:
                parts.Add(input.Substring(0, 3));
                rightPart = input.Substring(3);

                cntPart = rightPart.Substring(rightPart.Length - 2);
                parts.Add(rightPart.Substring(0, rightPart.Length - 2));
                parts.Add(cntPart);
                break;

            case bankAccountNumberFormat.singleSeparation:
                var tmp = input.Split("- ".ToArray(), StringSplitOptions.RemoveEmptyEntries);
                parts.Add(tmp[0]);

                rightPart = tmp[1];
                cntPart   = rightPart.Substring(rightPart.Length - 2);
                parts.Add(rightPart.Substring(0, rightPart.Length - 2));

                parts.Add(cntPart);
                break;

            case bankAccountNumberFormat.unknown:
                input = input.Replace("-", "");
                input = input.Replace(" ", "");
                SetFromString(input, bankAccountNumberFormat.noSeparation);
                return;

                break;
            }
            Int32 _tmp = 0;

            if (!Int32.TryParse(parts[0], out _tmp))
            {
                throw new ArgumentException("Input string [" + input + "] cant be interpreted as bank account number -- conversion to integer failed!");
            }
            else
            {
                bankPrefix = _tmp;
            }

            UInt64 _utmp = 0;

            if (!UInt64.TryParse(parts[1], out _utmp))
            {
                throw new ArgumentException("Input string [" + input + "] cant be interpreted as bank account number -- conversion to integer failed!");
            }
            else
            {
                accountNumber = _utmp;
            }

            if (!Int32.TryParse(parts[2], out _tmp))
            {
                throw new ArgumentException("Input string [" + input + "] cant be interpreted as bank account number -- conversion to integer failed!");
            }
            else
            {
                controlNumber = _tmp;
            }
        }