Задать вопрос
@Nulltiton

Как сократить выражение с проверкой на наличие отдельных символов в справочниках?

Для проверки номера на соответствие шаблону необходимо проверять различные символы, на наличие в справочнике (допустим первый символ может быть только A, B или C, каждый из вариантов имеет свою расшифровку, второй символ может быть только M, A, Y, местонахождение символа тоже играет важную роль). Есть ли какая-то возможность упростить данный код, потому как в нем очень много if?

static public bool Check(string number)
        {
            bool rightMark = true;

            if (!technology.ContainsKey(number[0])) rightMark = false;
            if (!continent.ContainsKey(number[1])) rightMark = false;
            if (!Regex.IsMatch(number.Substring(2, 2), @"\d{2}")) rightMark = false;
            if (!year.ContainsKey(number[4])) rightMark = false;
            if (!resolution.ContainsKey(number[5])) rightMark = false;
            if (!Regex.IsMatch(number.Substring(6, 4), @"\d{2}")) rightMark = false;
            if (!tuner.ContainsKey(number[10])) rightMark = false;
            if (!region.ContainsKey(number.Substring(11, 3))) rightMark = false;

            return rightMark;
        }
  • Вопрос задан
  • 76 просмотров
Подписаться 1 Простой 5 комментариев
Решения вопроса 1
axifive
@axifive
Software Engineer
Общее регулярное выражение напрашивается для такой проверки, но можно и упростить:
static public bool Check(string number)
    {
            return technology.ContainsKey(number[0])
              && continent.ContainsKey(number[1])
              && Regex.IsMatch(number.Substring(2, 3), @"\d{2}")
              && year.ContainsKey(number[4])
              && resolution.ContainsKey(number[5])
              && Regex.IsMatch(number.Substring(6, 4), @"\d{2}") 
              && tuner.ContainsKey(number[10]))
              && region.ContainsKey(number.Substring(11, 3));
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы