2016-06-18 4 views
1

У меня проблема с моим массивом. Имя моего массива word[3] Есть 3 элементов.Как разделить элемент массива?

word[0] = "Listen Repeat" 
word[1] = "Tune" 
word[2] = "Landing Page" 

Я хочу words[0] разделить два новых пункта и добавить существовать элемент в массиве.

words = Regex.Split(words[0], @"\s{1,}").Where(x => !string.IsNullOrEmpty(x)).ToArray(); 

Итак, мой массив становится как:

word[0] = "Listen" 
word[1] = "Repeat" 

Но я хочу, чтобы мой массив как:

word[0] = "Listen" 
word[1] = "Repeat" 
word[2] = "Tune" 
word[3] = "Landing Page" 

Примечание: При использовании добавить два массива, это массивы не сортирует. Вы можете увидеть мой следующий элемент в массиве как:

word[0] = "Listen"

в word[1] = "Repeat"

в word[2] = "Tune"

в word[3] = "Langding Page"

Если я с помощью AddRange это нравится:

из word[0] = "Listen"

в word[1] = "Tune"

в word[2] = "Langding Page"

в word[3] = "Repeat"

Этот код удалит элемент существует и создавать новые массивы с двумя элементами. Я не знаю, как добавить существующий массив.

Я пробовал с Append, но это не успех.

+0

Непонятно, что вы пробовали - в массиве нет 'Append' ... Существует много вопросов о том, как добавлять/заменять элементы в массиве/слиянии массивов всеми возможными способами. Не забудьте предоставить результаты вашего исследования в качестве ссылок с примером кода, который не работал (см. [MCVE] для руководства по образцам кода). –

+0

@AlexeiLevenkov. Почти в Stackoverflow. Вы добавляете два массива. Здесь: http://stackoverflow.com/questions/1547252/how-do-i-concatenate-two-arrays-in-c Но ваш массив не отсортирован. Вы можете увидеть мой следующий элемент в массиве, например 'word [0] =" Listen "' to 'word [1] =" Repeat "'.Если я использую 'AddRange', это будет выглядеть так:' word [0] = "Listen" 'to' word [1] = "Tune" 'to' word [2] = "Langding Page" 'to' word [3] = «Повторить» ' – vanloc

ответ

2

Вы можете сделать это с помощью LINQ и использовать SelectMany

var word = new string[3]; 
word[0] = "Listen Repeat"; 
word[1] = "Tune"; 
word[2] = "Landing Page"; 

word = word.SelectMany(x => Regex.Split(x, @"\s{1,}").Where(x => !string.IsNullOrEmpty(x))).ToArray(); 

Если вы просто хотите разделить конкретный пункт, то вы можете использовать эту функцию.

public static string[] SplitItem(string[] input, int index) 
{ 
    var l = new List<string>(input.Length); 
    l.AddRange(input.Take(index)); 
    l.AddRange(Regex.Split(input[index], @"\s{1,}").Where(y => !string.IsNullOrEmpty(y))); 
    l.AddRange(input.Skip(index + 1).TakeWhile(x => true)); 
    return l.ToArray(); 
} 


var word = new string[3]; 
word[0] = "Listen Repeat"; 
word[1] = "Tune"; 
word[2] = "Landing Page"; 

word = SplitItem(word,0); 
+0

Но я хочу, чтобы мой массив:« Слушай »« Повторить »« Настроить »« Целевая страница » –

+0

@DmitryDovgopoly Я тестировал. Он работает в моем случае. Я не использую 'word.Dump();'. – vanloc

+0

Давайте продолжим обсуждение в чате (http://chat.stackoverflow.com/rooms/114989/discussion-between-vn-lc-and-dmitry-dovgopoly). – vanloc

Смежные вопросы