Разделить и соединить строку C# [дубликат]


Возможные Дубликаты:
сначала разделить, а затем присоединиться к подмножеству строки

Я пытаюсь разделить строку на массив, взять первый элемент (использовать его), а затем объединить остальную часть массива в отдельную строку.

пример:

theString = "Some Very Large String Here"

станет:

theArray = [ "Some", "Very", "Large", "String", "Here" ]

затем я хочу установить первый элемент в переменной и использовать его в дальнейшем на.

затем я хочу объединить остальную часть массива в новую строку.

так бы и стало:

firstElem = "Some";
restOfArray = "Very Large String Here"

Я знаю, что могу использовать theArray[0] для первого элемента, но как бы я concatinate остальной массив новую строку?

3   51  

3 ответа:

можно использовать string.Split и string.Join:

string theString = "Some Very Large String Here";
var array = theString.Split(' ');
string firstElem = array.First();
string restOfArray = string.Join(" ", array.Skip(1));

если вы знаете, что всегда хотите отделить только первый элемент, вы можете использовать:

var array = theString.Split(' ', 2);

это делает его так, что вам не придется присоединиться:

string restOfArray = array[1];

Ну, вот мой "ответ". Он использует тот факт, что строку.Сплит можно сказать, что он должен разделить многие элементы (которые мне не хватает в других ответах):

string theString = "Some Very Large String Here";
var array = theString.Split(new [] { ' ' }, 2); // return at most 2 parts
// note: be sure to check it's not an empty array
string firstElem = array[0];
// note: be sure to check length first
string restOfArray = array[1];

Это очень похоже на Substring метод, просто другим способом.

вы можете разделить и соединить строку, но почему бы не использовать подстроки? Тогда вы только в конечном итоге с одним разделением вместо разделения строки на 5 частей и повторного присоединения к нему. Конечный результат тот же, но подстрока, вероятно, немного быстрее.

        string lcStart = "Some Very Large String Here";
        int lnSpace = lcStart.IndexOf(' ');
        if (lnSpace > -1)
        {
            string lcFirst = lcStart.Substring(0, lnSpace);
            string lcRest = lcStart.Substring(lnSpace + 1);
        }