/// <summary> /// Изменение формата данных о человеке /// </summary> /// <param name="person">Информация о человеке</param> /// <returns>Верный формат данных о человеке</returns> public static PersonBase ToCorrect(PersonBase person) { Regex regex = new Regex(@"[-]"); string[] name = new string[2]; name[0] = person.Name; name[1] = person.Surname; for (int i = 0; i < 2; i++) { name[i] = name[i].ToLower(); //Проверка на двойное имя/фамилию if (regex.IsMatch(name[i])) { string[] doubleName = name[i].Split('-'); name[i] = ToRightBound(doubleName[0]) + "-" + ToRightBound(doubleName[1]); } else { name[i] = ToRightBound(name[i]); } } person.Name = name[0]; person.Surname = name[1]; return(person); }
/// <summary> /// Удаляет элемент из списка /// </summary> /// <param name="person">Данные человека</param> public bool Remove(PersonBase person) { CheckZeroLength(); int i = IndexOf(person); RemoveAt(i); return(true); }
/// <summary> /// Добавляет данные о человеке в лист /// </summary> /// <param name="person">Данные человека</param> public void Add(PersonBase person) { PersonBase[] newPerson = Person; Person = new PersonBase[Person.Length + 1]; for (int i = 0; i < newPerson.Length; i++) { Person[i] = newPerson[i]; } Person[Person.Length - 1] = person; }
/// <summary> /// Возвращает индекс человека в списке /// </summary> /// <param name="person">Данные человека</param> /// <returns>Индекс человека в списке</returns> public int IndexOf(PersonBase person) { CheckZeroLength(); for (int i = 0; i < Person.Length; i++) { if (person.Name == Person[i].Name && person.Surname == Person[i].Surname && person.Age == Person[i].Age) { return(i); } } throw new ArgumentException(string.Format("index not found", nameof(person))); }
/// <summary> /// Удаление элемента по указанному индексу index /// </summary> /// <param name="index">Индекс элемента в списке</param> public void RemoveAt(int index) { CheckZeroLength(); PersonBase[] newPerson = Person; Person = new PersonBase[Person.Length - 1]; int changeIndex = 0; for (int j = 0; j < newPerson.Length; j++) { if (j == index) { continue; } Person[changeIndex] = newPerson[j]; changeIndex++; } }
/// <summary> /// Заполенение основных свойств человека /// </summary> /// <param name="person">Человек</param> /// <param name="gender">Пол</param> /// <param name="age">Возраст</param> private static void GetBaseInfo(PersonBase person, Gender gender, int age) { switch (gender) { case Gender.Male: person.Name = TextReader("MaleFirstNames.txt"); person.Surname = TextReader("MaleLastNames.txt"); person.Age = age; person.Gender = gender; break; case Gender.Female: person.Name = TextReader("FemaleFirstNames.txt"); person.Surname = TextReader("FemaleLastNames.txt"); person.Age = age; person.Gender = gender; break; default: throw new ArgumentException(string.Format("wrong gender", nameof(gender))); } }
/// <summary> /// Удаляет все элементы в списке /// </summary> public void RemoveAll() { Person = new PersonBase[0]; }