Подтвердить что ты не робот

Разделить и присоединиться к строке С#

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

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

Пример:

theString = "Some Very Large String Here"

Стало бы:

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

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

Затем я хочу присоединиться к остальной части массива в новую строку.

Значит, это будет:

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

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

4b9b3361

Ответ 1

Вы можете использовать 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];

Ответ 2

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

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

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

Ответ 3

Вы можете разделить и присоединиться к строке, но почему бы не использовать подстроки? Затем вы получаете только один раскол, а не разделение строки на 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);
        }