Проверка условий ввода данных в textBox - C#

Узнай цену своей работы

Формулировка задачи:

Вводится последовательность слов, их должно быть не меньше 12, длинна от 1 до 5, разделитель - запятая, за последним словом - точка. Нужно проверить нет ли за последним словом 2-х точек, проверить строку на пустоту, длину слов и их количество. Когда выводится сообщение о 1 ошибке, остальные не проверять. Собственно не получается проверить пустую строку и 2 точки (просто не понимаю как это сделать).
 public void Task() //метод реализации рограммного задания
        {
            if (Data.Length > 0)
                MessageBox.Show("Пустая строка!");
            else
            if (Data[Data.Length - 1] != '.') 
            {
                MessageBox.Show("В конце строки должна быть 1 точка!");
 
            }
            else
            {
                char[] usl = { ',' };
                string[] parts = this.Data.Split(usl);
                if (parts.Rank < 12)
                {
                    MessageBox.Show("Содержится меньше 12 слов!");
                }
                else
                {
                    for (int i = 0; i < parts.Rank; i++)
                    {
                        if ((parts[i].Length >= 1) & (parts[i].Length < 6))
                            MessageBox.Show("В словах меньше 1 или больше 5 знаков");
                    }
                }
            }

Решение задачи: «Проверка условий ввода данных в textBox»

textual
Листинг программы
[TestClass]
    public class MessageCheckerTests
    {
        [TestMethod]        
        public void EmptyText()
        {
            var str = "";
            var checker = new MessageChecker();
            var ex = AssertException.Throws<MessageCheckException>(()=> checker.Check(str));
            Assert.AreEqual(ex.ErrorType, MessageError.EmptyString);
        }
 
        [TestMethod]        
        public void LessThen12()
        {
            var str = "abcde,abcde.";
            var checker = new MessageChecker();
            var ex = AssertException.Throws<MessageCheckException>(() => checker.Check(str));
            Assert.AreEqual(ex.ErrorType, MessageError.WordsCount);
        }
 
        [TestMethod]        
        public void WordLengthIsZero()
        {
            var str = "abcde,abcde,,abcde,abcde,abcde,abcde,abcde,abcde,abcde,abcde,abcde.";
            var checker = new MessageChecker();
            var ex = AssertException.Throws<MessageCheckException>(() => checker.Check(str));
            Assert.AreEqual(ex.ErrorType, MessageError.WordLength);
        }
 
        [TestMethod]
        public void WordLengthGreaterThen5()
        {
            var str = "abcde,abcdef,abcde,abcde,abcde,abcde,abcde,abcde,abcde,abcde,abcde,abcde.";
            var checker = new MessageChecker();
            var ex = AssertException.Throws<MessageCheckException>(() => checker.Check(str));
            Assert.AreEqual(ex.ErrorType, MessageError.WordLength);
        }
 
        [TestMethod]
        public void DotSkipped()
        {
            var str = "abcde,abcde,abcde,abcde,abcde,abcde,abcde,abcde,abcde,abcde,abcde,abcde";
            var checker = new MessageChecker();
            var ex = AssertException.Throws<MessageCheckException>(() => checker.Check(str));
            Assert.AreEqual(ex.ErrorType, MessageError.DotAtEndSkipped);
        }
 
        [TestMethod]
        public void MultipleDots()
        {
            var str = "abcde,abcde,abcde,abcde,abcde,abcde,abcde,abcde,abcde,abcde,abcde,abcde..";
            var checker = new MessageChecker();
            var ex = AssertException.Throws<MessageCheckException>(() => checker.Check(str));
            Assert.AreEqual(ex.ErrorType, MessageError.MultipleDotsAtEnd);
        }        
    }
 
    public class MessageChecker
    {
        public void Check(string msg)
        {
            if (msg.Length == 0)
                throw new MessageCheckException(MessageError.EmptyString, "Пустая строка!");
            else if (msg.Last() != '.')
            {
                throw new MessageCheckException(MessageError.DotAtEndSkipped, "В конце строки должна быть 1 точка!");
            }
            else if (msg.Last() == '.' && msg.Length > 1 && msg[msg.Length - 2] == '.')
            {
                throw new MessageCheckException(MessageError.MultipleDotsAtEnd, "В конце строки должна быть только 1 точка!");
            }
            else
            {
                char[] usl = { ',' };
                string[] parts = msg.Split(usl);
                if (parts.Length < 12)
                {
                    throw new MessageCheckException(MessageError.WordsCount, "Содержится меньше 12 слов!");
                }
                else
                {
                    for (int i = 0; i < parts.Length; i++)
                    {
                        if ((parts[i].Length < 1) || (parts[i].Length > 5))
                            throw new MessageCheckException(MessageError.WordLength, "В словах меньше 1 или больше 5 знаков");
                    }
                }
            }
        }
    }
 
    public enum MessageError
    {
        EmptyString,
        WordsCount,
        WordLength,        
        DotAtEndSkipped,
        MultipleDotsAtEnd
    }
 
    public class MessageCheckException : Exception
    {
        public MessageCheckException(MessageError errorType, string msg) : base(msg)
        {
            ErrorType = errorType;
        }
 
        public MessageError ErrorType { get; private set; }
    }
 
    public static class AssertException
    {
        public static T Throws<T>(Action action) where T : Exception
        {
            try
            {
                action();
            }
            catch (T ex)
            {
                return ex;
            }
 
            Assert.Fail("Expected exception of type {0}.", typeof(T));
 
            return null;
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5