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