Разделить и присоединиться к строке С#
Возможный дубликат:
Сначала разделите, затем присоедините подмножество строки
Я пытаюсь разбить строку на массив, извлечь первый элемент (использовать его), а затем объединить остальную часть массива в отдельную строку.
Пример:
theString = "Some Very Large String Here"
Стало бы:
theArray = [ "Some", "Very", "Large", "String", "Here" ]
Затем я хочу установить первый элемент в переменной и использовать его позже.
Затем я хочу присоединиться к остальной части массива в новую строку.
Значит, это будет:
firstElem = "Some";
restOfArray = "Very Large String Here"
Я знаю, что я могу использовать theArray[0]
для первого элемента, но как бы связать остальную часть массива с новой строкой?
Ответы
Ответ 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);
}