81 lines
3.0 KiB
C#
81 lines
3.0 KiB
C#
using System.Text;
|
|
|
|
namespace View_by_Distance.Shared.Models.Stateless.Methods;
|
|
|
|
internal abstract class PersonName
|
|
{
|
|
|
|
// ...
|
|
|
|
internal static Models.PersonName GetPersonName(string name)
|
|
{
|
|
Models.PersonName result;
|
|
Models.PersonNameLast personNameLast;
|
|
Models.PersonNameAlias personNameAlias;
|
|
Models.PersonNameFirst personNameFirst;
|
|
Models.PersonNameMiddle personNameMiddle;
|
|
string[] segments = name.Split(' ');
|
|
if (segments.Length == 1)
|
|
{
|
|
personNameFirst = new(string.Empty);
|
|
personNameLast = new(string.Empty);
|
|
personNameMiddle = new(string.Empty);
|
|
personNameAlias = new(segments[0]);
|
|
}
|
|
else if (segments.Length == 2)
|
|
{
|
|
personNameFirst = new(segments[0]);
|
|
personNameLast = new(segments[1]);
|
|
personNameMiddle = new(string.Empty);
|
|
personNameAlias = new(string.Empty);
|
|
}
|
|
else if (segments.Length == 3 && segments[2] is "Jr." or "Jr" or "Sr")
|
|
{
|
|
personNameFirst = new(segments[0]);
|
|
personNameLast = new(segments[1]);
|
|
personNameMiddle = new(string.Empty);
|
|
personNameAlias = new(string.Join(' ', segments));
|
|
}
|
|
else
|
|
{
|
|
string[] comment = name.Split(new string[] { " (" }, StringSplitOptions.None);
|
|
if (comment.Length == 1)
|
|
{
|
|
personNameFirst = new(segments[0]);
|
|
personNameLast = new(segments[^1]);
|
|
personNameMiddle = new(string.Empty);
|
|
personNameAlias = new(string.Join(' ', segments));
|
|
}
|
|
else
|
|
{
|
|
segments = comment[0].Split(' ');
|
|
personNameFirst = new(segments[0]);
|
|
personNameLast = new(segments[^1]);
|
|
personNameMiddle = new(string.Empty);
|
|
personNameAlias = new(string.Concat(string.Join(' ', segments), " (", comment[1]));
|
|
}
|
|
}
|
|
result = new(personNameFirst, personNameMiddle, personNameLast, personNameAlias);
|
|
return result;
|
|
}
|
|
|
|
internal static string GetFullName(Models.PersonName personName)
|
|
{
|
|
StringBuilder result = new();
|
|
if (personName.First is not null && !string.IsNullOrEmpty(personName.First.Value))
|
|
_ = result.Append(personName.First.Value);
|
|
if (personName.Middle is not null && !string.IsNullOrEmpty(personName.Middle.Value))
|
|
_ = result.Append(' ').Append(personName.Middle.Value);
|
|
if (personName.Last is not null && !string.IsNullOrEmpty(personName.Last.Value))
|
|
_ = result.Append(' ').Append(personName.Last.Value);
|
|
if (personName.Alias is not null && !string.IsNullOrEmpty(personName.Alias.Value))
|
|
{
|
|
if (personName.Alias.Value.Contains(" Jr"))
|
|
_ = result.Append(" Jr");
|
|
else if (personName.Alias.Value.Contains(" Sr"))
|
|
_ = result.Append(" Sr");
|
|
}
|
|
return result.ToString();
|
|
}
|
|
|
|
} |