В этом случае вам на самом деле не нужен for
l oop, поскольку у нас есть метод All
из System.Linq
, который может помочь нам проверить, соответствуют ли все символы в строке некоторым критериям:
const int validLength = 7; // Length of a valid string
var employeeID = txtEmployeeID.Text.Trim(); // Get trimmed string from txtEmployeeID
var empIDSplit = employeeID.Split('-'); // Split on the dash character
if (employeeID.Length != validLength || // Validate overall length
empIDSplit.Length != 2 || // Validate number of parts after split
empIDSplit[0].Length != 2 || // Validate first part length
empIDSplit[1].Length != 4 || // Validate second part length
!empIDSplit[0].All(char.IsLetter) || // Validate first part are letters
!empIDSplit[1].All(char.IsDigit) // Validate second part are digits
)
{
MessageBox.Show("1) The employee ID must be in the following format: XX-9999.",
"Entry Check", MessageBoxButtons.OK, MessageBoxIcon.Information);
txtEmployeeID.Focus();
return false;
}
return true;
Если вы делаете , вам нужно использовать for
l oop вместе с переменной для отслеживания результата проверки, вот способ сделать это. Мы начнем с предположения, что ввод действителен, а затем «быстро провалимся», если обнаружим, что это не так.
Когда мы находим недопустимые данные, мы устанавливаем переменную в false и затем пропускаем до конца метода, где отображаем наше сообщение (при необходимости) и возвращаем результат:
public bool Validate_Employee_ID()
{
const int validLength = 7; // Length of a valid string
var isValid = true; // Validation result
var employeeID = txtEmployeeID.Text.Trim(); // Trimmed string from txtEmployeeID
var empIDSplit = employeeID.Split('-'); // Split on the dash character
if (employeeID.Length != validLength || // Validate overall length
empIDSplit.Length != 2 || // Validate number of parts after split
empIDSplit[0].Length != 2 || // Validate first part length
empIDSplit[1].Length != 4) // Validate second part length
{
isValid = false;
}
else
{
foreach (var chr in empIDSplit[0])
{
if (!char.IsLetter(chr))
{
isValid = false;
break; // "Fail fast" by exiting the loop at the first bad data
}
}
// "Fail fast" by not checking the second part if the first one failed
if (isValid)
{
foreach (var chr in empIDSplit[1])
{
if (!char.IsDigit(chr))
{
isValid = false;
break; // "Fail fast" by exiting the loop at the first bad data
}
}
}
}
// Display an error message if the input was invalid
if (!isValid)
{
MessageBox.Show("1) The employee ID must be in the following format: XX-9999.",
"Entry Check", MessageBoxButtons.OK, MessageBoxIcon.Information);
txtEmployeeID.Focus();
}
return isValid;
}