2016-01-21 2 views
-6

Я пытаюсь разбить строку, на которую пользователь набрал. Например: Он печатает в «Привет». Поэтому я хочу разбить это на массив: ["H", "E", "L", ...]. Итак, как я могу использовать эту функцию .split()?C# Split String - Разделить строку в массив

И как его сохранить в массив?

Спасибо, ребята.

+6

Попробуйте эту ссылку она должна быть http://stackoverflow.com/questions/1485237/split-string-in-c-sharp-without-delimiter-sort-of –

ответ

3

Если вы хотите string[] в качестве желаемого результата ["H","E","L",... предлагает:

string input = "Hello"; 
char[] chars = input.ToCharArray(); 
string[] asStringArray = Array.ConvertAll(chars, char.ToString); 

String.ToCharArray лучше Enumerable.ToArray, если строка является большим, потому что ToCharArray знает размер строки заранее. Поэтому он может инициализировать массив с правильным размером, не изменяя его снова и снова.

То же самое относится к Array.ConvertAll, который знает размер массива.

+0

Согласно [sourcesource] (http://referencesource.microsoft.com/#System.Core/System/ Linq/Enumerable.cs), 'Enumerable.ToArray' заполняет' Buffer', который проверяет, реализует ли данная последовательность 'ICollection ', и если так использует его' Count', поэтому было бы мало (если таковое) преимущество в используя 'String.ToCharArray' над' Enumerable.ToArray'. ---- strike, что 'string' не реализует' ICollection ', поэтому вы абсолютно правы. – Corak

+0

Полезно знать, поскольку мой подход был бы «string [] asStringArray = input.Select (c => c.ToString()). ToArray();' – Filburt

+0

Большое вам спасибо :) –

3
char[] myArray = myString.ToArray(); 
+0

Можно ли просто выполнить 'myString [0]' в C#? Не трогали его надолго. – choz

+2

Да, myString [0] вернет первый символ этой строки. Вы можете перебирать длину строки, я думаю! – PulseLab

+0

Я не говорил о массиве. Просто случайный вопрос, не вызовет ли он ошибку или нет. Tq FYI. :) – choz

5

Если вы хотите char[] как {'H', 'e', 'l', 'l', 'o'} вы можете просто использовать ToCharArray():

string s = "Hello"; 
char[] letters = s.ToCharArray(); 

Если вы хотите string[] как {"H", "e", "l", "l", "o"} вы можете сделать это следующим образом:

string s = "Hello"; 
string[] letters = s.Select(c => c.ToString()).ToArray(); 
+0

Не могли бы вы добавить, что если ' строка myString = "hello" ', тогда' char e = myString [1] 'полностью действует? –

+0

Во втором случае вызов '.ToCharArray()' избыточен. –

+0

@IvanStoev справа, thx. Обновлено. –

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