В C # как узнать, является ли первый символ в учетной записи определенным значением? - PullRequest
3 голосов
/ 21 октября 2019

У меня есть строка, содержащая 15-значный номер счета. Первая цифра не может быть 0,1, 8 или 9. Я хочу сказать что-то вроде:

public bool ValidateAccountNumber(string Accountnumber )
{
    char[] Invalidboro = new char[] { '0', '1', '8', '9'};
    bool returnValue = true;

    if (Accountnumber.Length != 15 || Accountnumber.Substring(1, 1).Contains(Invalidboro))
    {
        returnValue = false;
    }
    return returnValue;
}

Я новичок в C # и не знаю, как это сделать.

Ответы [ 4 ]

6 голосов
/ 21 октября 2019

регулярное выражение

public bool ValidateAccountNumber(string Accountnumber)
{
    return Accountnumber != null && Regex.IsMatch(Accountnumber, "^[2-7][0-9]{14}$");
}
4 голосов
/ 21 октября 2019

Вы просто должны объединить все необходимые проверки с &&

using System.Linq;

...

// static: we don't want this in the method
public static bool ValidateAccountNumber(string Accountnumber) {
  return // Not null 
         Accountnumber != null &&
         // Contains exactly 15 characters 
         Accountnumber.Length == 15 &&
         // All characters are digits
         Accountnumber.All(c => c >= '0' && c <= '9') &&
         // Doesn't start from 0, 1, 8, 9 
       !(new char [] {'0', '1', '8', '9'}.Any(c => c == Accountnumber[0]));
}
2 голосов
/ 21 октября 2019

Я рекомендую вам сделать это следующим образом:

public bool ValidateAccountNumber(string accountNumber)
{
    var invalidBoro = new [] { '0', '1', '8', '9'};

    if (accountNumber != null && accountNumber.Length == 15)
    {
        return !invalidBoro.Contains(accountNumber[0]);
    }

    return false;
}
1 голос
/ 21 октября 2019

Проверяется три четыре условия о AccountNumber:

  • Не должно быть null
  • Оно должно иметь ровно 15 символов
  • Не должно начинаться с 0, 1, 8 или 9
  • Все символы должны быть цифрами

public static bool ValidateAccountNumber(string Accountnumber )
{
    var Invalidboro = new[] { '0', '1', '8', '9'};

    return Accountnumber != null &&
           Accountnumber.Length == 15 &&
           !Invalidboro.Contains(Accountnumber[0]) &&
           Accountnumber.All(c => c >= '0' && c <= '9');
}

Просто уточнить для !Invalidboro.Contains(Accountnumber[0]) части:

  • Invalidboro - ваш массив недопустимых начальных символов.
  • Мы проверяем, содержит ли он первый символ Accountnumber ([0] - это первый элемент массива, а string - это массив char).
  • Если он содержит его, он недопустим. Но метод должен возвращать true для действительных чисел, поэтому мы отрицаем его с помощью !. Другими словами, это означает: это действительно, если оно не начинается с какого-то недопустимого символа.
...