Top.Mail.Ru
Ответы

C#. Как разбить строку на символы, если нет разделителей?

Например, строка такого вида "ПолучитьОтвет". Требуется каждую букву занести в элементы нового массива (mas[0]="П", mas[1]="о", mas[2]="л", и т.д.)
Понятно, что при чтение строки из консоли или из файла можно применить посимвольное чтение. А как быть если строка уже присвоена переменной? В C# есть что-нибудь типа посимвольного присвоения?

Дополнен

Илья Павлов, цель получить кол-во повторяющихся букв

Дополнен

Илья Павлов, огромное спасибо ваш код очень помог! Единственный момент - тип массива и его эл-ов надо указывать сhar:

string S = "И всю ночь напролет до зари я читаю стихи проституткам... ";
char[] A_S = new char[S.Length];
for(int i = 0; i < A_S.Length; i++)
{
A_S[ i ] = S[ i ];
}

MyXa, Split здесь не применим, т. к. в строке нет разделителей.

Namolem, не понятен ваш код. Он на C++?

Jekaterina Usova, вам тоже огромное спасибо! Оказывается всё намного проще чем я представлял :)

По дате
По рейтингу
Аватар пользователя
Новичок
14лет

Прежде всего я не понимаю цель этих действий, поскольку строка в C# (и не только) уже сама по себе является константным массивом символов, т. е. к отдельному ее символу можно обратиться через индекс:
string Vasya = "VasyaPupkinNarkoman";
char m = Vasya[0];

Если же требуется каждый элемент строки перенести в отдельную строку, являющуюся частью массива строк, можно использовать цикл, так сказать, не мудрствуя лукаво:
string S = "И всю ночь напролет до зари я читаю стихи проституткам... ";
string[] A_S = new string[S.Length];
for(int i = 0; i < A_S.Length; i++)
{
A_S[ i ] = S[ i ];
}

З. Ы. : Пишите в ICQ: 228004347 или Агент.

Аватар пользователя
14лет

String myString = "ABCD";
char[] mystr = myString.ToCharArray();

Аватар пользователя
Просветленный
14лет

в стринге есть функция toCharArray()

А задача решается так:
string str = "Строка с повторяющимися буквами";
int count = str
.ToLower() // сделать все буквы строчными
.GroupBy(c => c) // разбить на группы с одинаковыми буквами
.Where(c => c.Count() > 1)// оставить только группы с двумя или более буквами
.Sum(g => g.Count()); // и посчитать количество (сумму количеств в этих группых)

Аватар пользователя
Гуру
14лет

метод split (гугли)
и будет тебе массив

а далее перебором и т. д