Как получить первые и последние части строки, разделенные пробелом - PullRequest
2 голосов
/ 25 декабря 2011

Если у меня имя состоит из нескольких частей, разделенных пробелом, и я хочу получить:

the first name + " " + the last name.

Есть ли способ сделать это.

  • Нет правил, за исключением того, что имена разделяются пробелом.

  • Количество деталей может быть любым.

Пример:

john depp lennon

Кому:

john lennon

Ответы [ 3 ]

5 голосов
/ 25 декабря 2011
string sString = "john depp lennon";
string[] sArray = sString.Split(' ');

string sStartEnd = sArray[0] + " " + sArray[sArray.Count()-1]; // "john lennon"
3 голосов
/ 25 декабря 2011

Поскольку вы упомянули LINQ в тегах, я получу вам это, пропустив проверку ввода одной части (только "Johm") или вообще ничего не введя, что будет:

Убедитесь, что у вас есть:

using System.Linq;

Тогда:

var nameParts = name.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
var fullName = string.Format("{0} {1}", nameParts.First(), nameParts.Last());

Thise сделает работу для счастливого пути


Если мы хотим проверить крайние случаи, мы можем добавить дополнительные проверки:

static string GetName(string nameEntry)
{
    // assuming .NET 4, or use string.IsNullOrEmpty(), 
    //    as we are protected later from white space-only text
    if(string.IsNullOrWhiteSpace(nameEntry))
        return string.Empty; // Or throw error. Your choice

    var nameParts = nameEntry.Split(new[] { ' ' }, 
                                        StringSplitOptions.RemoveEmptyEntries);
    if(!nameParts.Any()) return string.Empty(); // Or throw error. Your choice

    if(nameParts.Length == 1)
        return nameParts.First();

    var fullName = string.Format("{0} {1}", nameParts.First(), nameParts.Last());
    return fullName;
}
2 голосов
/ 25 декабря 2011
string str = "john depp lennon";      
string[] data = str.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
string result = string.Format("{0} {1}", data.First(), data.Last());
...