Разделить строку на массив строк из отдельных символов - PullRequest
45 голосов
/ 24 марта 2012

Я хочу что-то столь же простое, как превращение "this is a test" в

new string[] {"t","h","i","s"," ","i","s"," ","a"," ","t","e","s","t"}

Неужели мне бы пришлось сделать что-то вроде

test = "this is a test".Select(x => x.ToString()).ToArray();

edit: Чтобы уточнить, я не хочу массив символов, в идеале я хочу массив строк. Я не вижу ничего плохого в приведенном выше коде, за исключением того факта, что я думаю, что есть более простой способ.

Ответы [ 8 ]

98 голосов
/ 24 марта 2012

Я считаю, что это то, что вы ищете:

char[] characters = "this is a test".ToCharArray();
31 голосов
/ 24 марта 2012

Строки в C # уже имеют индексатор символов

string test = "this is a test";
Console.WriteLine(test[0]);

И ...

if(test[0] == 't')
  Console.WriteLine("The first letter is 't'");

Это тоже работает ...

Console.WriteLine("this is a test"[0]);

И это...

foreach (char c in "this is a test")
  Console.WriteLine(c);

РЕДАКТИРОВАТЬ :

Я заметил, что вопрос был обновлен относительно char []массивы.Если у вас должен быть массив string [], вот как вы разбиваете строку на каждый символ в c #:

string[] test = Regex.Split("this is a test", string.Empty);

foreach (string s in test)
{
  Console.WriteLine(s);
}
4 голосов
/ 12 марта 2015

Простой !!
одна строка:

 var res = test.Select(x => new string(x, 1)).ToArray();
3 голосов
/ 24 марта 2012

Вы можете просто использовать String.ToCharArray () , а затем обрабатывать каждый символ как строку в вашем коде.

Вот пример:

    foreach (char c in s.ToCharArray())
        Debug.Log("one character ... " +c);
2 голосов
/ 24 марта 2012

Попробуйте это:

var charArray = "this is a test".ToCharArray().Select(c=>c.ToString());
1 голос
/ 24 марта 2012

Скорее всего, вы ищете метод ToCharArray () . Однако вам потребуется немного больше работы, если требуется string[], как вы отметили в своем посте.

    string str = "this is a test.";
    char[] charArray = str.ToCharArray();
    string[] strArray = str.Select(x => x.ToString()).ToArray();

Редактировать: Если вы беспокоитесь о краткости преобразования, я предлагаю вам сделать это методом расширения.

public static class StringExtensions
{
    public static string[] ToStringArray(this string s)
    {
        if (string.IsNullOrEmpty(s))
            return null;

        return s.Select(x => x.ToString()).ToArray();
    }
} 
0 голосов
/ 28 июня 2018
string input = "this is a test";
string[] afterSplit = input.Split();

foreach (var word in afterSplit)
    Console.WriteLine(word);

Результат:

this
is
a
test
0 голосов
/ 16 августа 2017

Преобразовать сообщение в массив символов, затем использовать цикл for, чтобы изменить его на строку

string message = "This Is A Test";
string[] result = new string[message.Length];
char[] temp = new char[message.Length];

temp = message.ToCharArray();

for (int i = 0; i < message.Length - 1; i++)
{
     result[i] = Convert.ToString(temp[i]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...