.NET 4.x Как из строки получить Фамилию и инициалы - C#
Формулировка задачи:
Собственно вопрос в следующем как из строки получить Фамилию и инициалы.
Есть написанная мною рабочая функция, но как мне кажется есть решение более изящное нежели мое?
class Program { static void Main(string[] args) { Console.Write("Введите ФИО: "); String s = Console.ReadLine(); Console.WriteLine("Результат - " + ExctraxtIni(s.ToString())); Console.ReadKey(); } internal static string ExctraxtIni(string Name) { //Возварщаем пустую строку если строка NULL if (String.IsNullOrEmpty(Name)) { Console.WriteLine("Входная строка пуста"); return String.Empty; } Console.WriteLine("Изначальная длинна строки = " + Name.Length); //удаляем начальные и конечные пробелы в строке, а также все точки. Name = Name.Trim().Replace(".",String.Empty); Console.WriteLine("Длинна строки после удаления пробелов и точек = " + Name.Length); //Возварщаем пустую строку если строка состояла из пробелов и точек if (String.IsNullOrEmpty(Name)) { Console.WriteLine("Входная строка пуста"); return String.Empty; } //Получаем индекс первого пробела int index = Name.IndexOf(' '); //Если Пробел не найден Возвращаем только Фамилию if (index < 0) { Console.WriteLine("Строка имеет только Фамилию - " + Name.Substring(0, 1).ToUpper() + Name.Substring(1).ToLower()); return Name.Substring(0, 1).ToUpper() + Name.Substring(1).ToLower(); } // получаем фамилию string lastName = Name.Substring(0, index).Trim(); lastName = lastName.Substring(0, 1).ToUpper() + lastName.Substring(1).ToLower(); Console.WriteLine("Фамилия - " + lastName); //Удаляем фамилию из нашей строки Name = Name.Substring(index).Trim(); //Получаем индекс первого пробела для имени index = Name.IndexOf(' '); //Если Пробел не найден Возвращаем Фамилию и первый инициал if (index < 0) { Console.WriteLine("Строка имеет только Фамилию и первый инициал - " + lastName + " " + Name.Substring(0, 1).ToUpper() + "."); return lastName + " " + Name.Substring(0, 1).ToUpper() + "."; } // получаем фамилию string firstName = Name.Substring(0, index).Trim(); firstName = firstName.Substring(0, 1).ToUpper() + firstName.Substring(1).ToLower(); Console.WriteLine("Имя - " + firstName); //Получаем оставшееся отчество string fatherName = Name.Substring(index).Trim().Substring(0, 1).ToUpper() + Name.Substring(index).Trim().Substring(1).ToLower(); Console.WriteLine("Отчество - " + fatherName); return lastName + " " + firstName.Substring(0, 1) + ". " + fatherName.Substring(0, 1) + "."; } }
Решение задачи: «.NET 4.x Как из строки получить Фамилию и инициалы»
textual
Листинг программы
using System; using System.Text.RegularExpressions; namespace ConsoleApplication113 { class Program { static void Main() { Console.Write("Введите ФИО: "); Console.WriteLine(); string s = "Иванов Иван Иванович"; // Console.ReadLine(); Console.WriteLine("Результат - " + ExctraxtIni(s)); Console.ReadKey(); } private static string ExctraxtIni(string s) { var inits = Regex.Match(s, @"(\w+)\s+(\w+)\s+(\w+)").Groups; return string.Format("{0} {1}. {2}.", inits[1], inits[2].Value[0], inits[3].Value[0]); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д