Как использовать Console.ReadLine () в операторе while - PullRequest
0 голосов
/ 25 октября 2019

Я зацикливаюсь на вопросе, пока пользователь не введет значение, которое я хочу принять. В данном случае это число с тире, и оно должно быть длиной 7 символов.

Моя проблема заключается в размещении ReadLine внутри оператора while ().

Так что это мой код:

string cpr = "";
do
{

cpr = Console.ReadLine(); //I dont want ReadLine here :/

} while (
//I want Console.ReadLine() here
cpr.Length != 7
&&
!Regex.IsMatch(cpr, @"^[0-9-]+$")
&&
Regex.IsMatch(cpr, @"^[a-z]+$")
);

Возможно использование ReadLine в операторе while. У меня есть другой код, который работает при попытке синтаксического анализа int

do
{
//do something here
} while (!int.TryParse(Console.ReadLine(), out int1));

Ответы [ 2 ]

1 голос
/ 25 октября 2019

Хотя я согласен с комментариями (в том смысле, что это не лучший способ приблизиться к этому - на самом деле предоставленный вами код более чем адекватен), вы можете выполнять назначение внутриусловное утверждение. то есть.

var str = "";
do
{
...
} while ((str = Console.ReadLine()).Length != 7 && Regex.IsMatch(str, ...));

За исключением этого случая вам нужно будет использовать цикл while вместо do-while (поскольку вы не захватите ввод до конца цикла с помощью шаблона do-while).

1 голос
/ 25 октября 2019

Попробуйте что-то вроде этого:

            string cpr = "";
            bool condition = true;
            while (condition )
            {
                cpr = Console.ReadLine();
                if(cpr is ok)
                {
                    condition = false;
                }
            }
...