Проверка условий ввода данных в 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;
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д