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