.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]);
        }
    }
}

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


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

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

14   голосов , оценка 4 из 5
Похожие ответы