Проверка правильности ввода в C # - PullRequest
2 голосов
/ 09 декабря 2011

Я только начал изучать C #.Извините за вопрос noob.

Моё первое приложение для обучения - это приложение, в котором вы вводите свой возраст и выводите его в окне сообщения.

Я хочу проверить ввод с помощью Regex, чтобы ввод букв вызывал ошибку.

Проблема в том, что я не могу заставить его принять Regex.

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            string age;
            age = textBox1.Text;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string regexpattern;
            regexpattern = "^\t+";
            string regex1;

            regex1 = Regex.IsMatch(regexpattern);

            if (textBox1.Text == regex1)
            {             
                MessageBox.Show("error, numbers only please!");
            }         
            else
            {
                string age;
                string afe;
                string afwe2;

                afe = "You are ";
                age = textBox1.Text;
                afwe2 = " years old!";

                MessageBox.Show(afe + age + afwe2);
            }
        }

Спасибо!

Ответы [ 4 ]

4 голосов
/ 09 декабря 2011

Ваше регулярное выражение должно быть

regexpattern = "^\d+$"; 

Редактировать И кодирование неверно. Это должно быть так:

var regex = new Regex(@"^\d+$");

if (!regex.IsMatch(textBox1.Text))
{
    MessageBox.Show("error, numbers only please!");
}
2 голосов
/ 09 декабря 2011

Вам не нужно регулярное выражение, просто проверьте, является ли оно числом: Вот пример кода, надеюсь, он должен работать.

private void button1_Click(object sender, EventArgs e)
{
    string age = textBox1.Text;
    int i = 0; // check if it is a int
    bool result = int.TryParse(age, out i) // see if it is a int
    if(result == true){ // check if it is a int
        string afe;
        string afwe2;
        afe = "You are ";
        afwe2 = " years old!";
        MessageBox.Show(afe + age + afwe2);
    } else {
        MessageBox.Show("Please Enter a Number!"); // error message
    }
}
2 голосов
/ 09 декабря 2011

Отличным ресурсом для любого разработчика является библиотека regex.Скорее всего, то, что вы ищете, уже было размещено там.Например, вы можете ограничить возраст в определенном диапазоне.

regex library

1 голос
/ 09 декабря 2011

с регулярным выражением :

ненужно + с \d для проверки возраста людей. человек обычно живет между годами 0 / 113. :)

if(Regex.IsMatch(age, @"^\d{0,3}"))

другие способы сделать это:

с использованием int.TryParse

int AgeAsInt; 
if(int.TryParse(age, out AgeAsInt)) 

с использованием linq :

if(!String.IsNullOrEmpty(age) && age.All(char.IsDigit))

как я бы

if (int.TryParse(age, out ageAsInt) && ageAsInt <= 113)

вы можете использовать хотеть его. Лично я предпочитаю последнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...