我需要帮助处理这个问题,我有一个包含完整名字的字符串,需要将其分离并将其作为名和姓分别使用。
我需要帮助处理这个问题,我有一个包含完整名字的字符串,需要将其分离并将其作为名和姓分别使用。
你可以创建一个值对象来表示名称,并在应用程序中使用它
public class Name
{
public string FirstName { get; private set; }
public string LastName { get; private set; }
public string FullName { get; }
public Name(string name)
{
if (string.IsNullOrEmpty(name))
return;
FullName = name;
LoadFirstAndLastName();
}
private void LoadFirstAndLastName()
{
var names = FullName.Trim().Split(" ", 2);
FirstName = names.First();
if (names.Count() > 1)
LastName = names.Last();
}
public override string ToString() => FullName;
//Enables implicit set (Name name = "Rafael Silva")
public static implicit operator Name(string name) => new Name(name);
}
用法:
Name name = "Jhon Doe"; //FirstName = Jhon - LastName = Doe
Name name = new Name("Jhon Doe"); //FirstName = Jhon - LastName = Doe
Name name = new Name("Rafael Cristiano da Silva"); //FirstName = Rafael - LastName = Cristiano da Silva
//On class property
public Name Name {get; set; } = "Jhon Doe";
public static void SplitFullName(this string fullName, out string firstName, out string lastName)
{
firstName = string.Empty;
lastName = string.Empty;
if (!string.IsNullOrEmpty(fullName))
{
lastName = string.Empty; firstName = string.Empty;
int splitIndex = fullName.LastIndexOf(' ');
if (splitIndex >= 0)
{
firstName = fullName.Substring(0, splitIndex);
lastName = fullName.Substring(splitIndex + 1);
}
else
firstName = fullName;
}
}
使用方法:
"Micheal".SplitFullName(out string first, out string last);
// first = "Micheal"
// last = ""
"Micheal Jackson".SplitFullName(out string first, out string last);
// first = "Micheal"
// last = "Jackson"
"Micheal Joseph Jackson".SplitFullName(out string first, out string last);
// first = "Micheal Joseph"
// last = "Jackson"
顺便提一下,Visual Studio Intellisense 真是太强大了!我只写了到 if
条件,剩下的代码都被 Intellisense 自动完成了。
Sub SplitFullName(Full_Name As String)
Dim names = Full_Name.Split(" ")
Dim FirstName As String = ""
Dim MiddletName As String = ""
Dim LastName As String = ""
If names.Count = 0 Then
FirstName = ""
MiddletName = ""
LastName = ""
ElseIf names.Count = 1 Then
FirstName = names(0)
ElseIf names.Count = 2 Then
FirstName = names(0)
LastName = names(1)
Else
FirstName = names(0)
For i = 1 To names.Count - 2
MiddletName += " " & names(i)
Next
LastName = names(names.Count - 1)
End If
MsgBox("The first name is: " & FirstName & "; The middle name is: " & MiddletName & "; The last name is: " & LastName)
End Sub
如果您将第一个空格作为名字,其余部分作为姓氏,那么这将给我们
Person myPerson = new Person();
Misc tidyup = new Misc();
string[] result = tidyup.SplitFullName(tb1.Text);
foreach (string s in result)
{
Console.WriteLine(s);
if (result.First() == s)
{
myPerson.FirstName = s;
}
else
{
myPerson.LastName += s + " ";
Console.WriteLine(s);
Console.WriteLine(myPerson.LastName);
}
}
public string[] SplitFullName(string myName)
{
string[] names = myName.Split(' ');
//string firstName = names[0];
//string lastName = names[1];
return names;
}
简单易懂的代码,可以将类似于Flowers, Love的内容转换为Love Flowers(即使是像Williams Jones, Rupert John这样非常复杂的名字也可以):
string fullname = "Flowers, Love";
string[] fullnameArray = fullname.Split(",");//Split specify a separator character, so it's removed
for (int i = fullnameArray.Length - 1; i >= fullnameArray.Length - 2; i--)
{
Write($"{fullnameArray[i].TrimStart() + " "}");
}
输出: 爱花
反过来。爱花转换为花,爱:
string fullname = "Love Flowers";
int indexOfTheSpace = fullname.IndexOf(' ');
string firstname = fullname.Substring(0, indexOfTheSpace);
string lastname = fullname.Substring(indexOfTheSpace + 1);
WriteLine($"{lastname}, {firstname}");
有不止一种方法可以解决这个问题。我的具体情况可以通过以下代码示例来解决。
例如
int idx = fullName.IndexOf(' '); //This customer name : Osman Veli
if (fullName.Count(Char.IsWhiteSpace) > 1)
{
idx = fullName.LastIndexOf(' '); //This customer name : Osman Veli Sağlam
}
if (idx != -1)
{
// Osman Veli Sağlam
firstName = fullName.Substring(0, idx); // FirstName: Osman Veli
lastName = fullName.Substring(idx + 1); // LastName : Sağlam
}
final name = ' sambhav';
final words = name.trim().split(' ');
final firstName = words[0];
final lastName = words.length > 1 ? words[words.length - 1] : '';
print('first name : $firstName, last name : $lastName');
结果
input : Sambhav jain // first name : Sambhav, last name : jain
input : Sambhav the jain // first name : Sambhav, last name : jain
input : Sambhav // first name : Sambhav, last name :
"Edimar*Lima",* = 分隔符
- Tocco