.NET 2.x Преобразование текста из переменной string в char массив - C#

Узнай цену своей работы

Формулировка задачи:

Я наверное плохо еще разбираюсь в массивах но мне кажется что для моей задачи надо использовать "рваный" массив. Сей час объясню задачу. Дана переменная
string text;
в ней различные предложения. Для примеру такое: "На право вниз, затем вперед. Ты куда? Остановись немедленно! Не остановился и домой пошел" (грамматика и смысл не имеют значения). Мне надо по каждому символу перебрать текст циклом for, например. Это я сделал:
            
for (int i1 = 0; i1 < text.Length; i1 += 1) // проверка всех символов
{
}
Далее мне надо заносить каждый символ в четырех мерный массив. n1 - символизирует количество предложений n2 - символизирует количество подпредложений в каждом предложении n3 - символизирует количество слов в в каждом подпредложении n3 - символизирует количество символов в каждом слове
                if (text[i1] != ' ' && text[i1] != ',' && text[i1] != '.' && text[i1] != '!' && text[i1] != '?')
                {
                    // то же предложение
                    // то же подпредложение
                    // то же слово
                    n4++; // конец первой буквы, непеход на вторую
                }
                if (text[i1] == ' ')
                {
                    // то же предложение
                    // то же подпредложение
                    n3++; // конец первого слова, непеход на второе
                    n4 = 1;
                }
                if (text[i1] == ',')
                {
                    // то же предложение
                    n2++; // конец первого подпредложения, непеход на второе
                    n3 = 1;
                    n4 = 1;
                }
                if (text[i1] == '.' || text[i1] == '!' || text[i1] == '?')
                {
                    n1++; // конец первого подпредложения, непеход на второе
                    n2 = 1;
                    n3 = 1;
                    n4 = 1;
                }
как мне создать такой массив? я пробовал так:
            int n1 = 1;
            int n2 = 1;
            int n3 = 1;
            int n4 = 1;
 
            for (int i1 = 0; i1 < text.Length; i1 += 1) // проверка всех символов
            {
                char[, , ,] text00 = new char[n1, n2, n3, n4];
                text00[n1, n2, n3, n4] = text[i1];
 
                if (text[i1] != ' ' && text[i1] != ',' && text[i1] != '.' && text[i1] != '!' && text[i1] != '?')
                {
                    // то же предложение
                    // то же подпредложение
                    // то же слово
                    n4++; // конец первой буквы, непеход на вторую
                }
                if (text[i1] == ' ')
                {
                    // то же предложение
                    // то же подпредложение
                    n3++; // конец первого слова, непеход на второе
                    n4 = 1;
                }
                if (text[i1] == ',')
                {
                    // то же предложение
                    n2++; // конец первого подпредложения, непеход на второе
                    n3 = 1;
                    n4 = 1;
                }
                if (text[i1] == '.' || text[i1] == '!' || text[i1] == '?')
                {
                    n1++; // конец первого подпредложения, непеход на второе
                    n2 = 1;
                    n3 = 1;
                    n4 = 1;
                }
            }
но не вышло. Еще раз, я наверное плохо разбираюсь в массивах. помогите новичку. P.S.: на то что знаки препинания и пробелы записываются первые символы отдельного слова и многие другие недоработки внимания не обращать, это временно. мне бы начало с массивом разобраться.

Решение задачи: «.NET 2.x Преобразование текста из переменной string в char массив»

textual
Листинг программы
            string text = "На право вниз, затем вперед. Ты куда? Остановись немедленно! Не остановился и домой пошел";
            System.Text.RegularExpressions.Regex sentenceRegEx = new System.Text.RegularExpressions.Regex(@"[.!?]");
 
            //тут хранятся все предложения
            string[] sentences = sentenceRegEx.Split(text);
            char[][][][] text00 = new char[sentences.Length][][][];
            for (int i = 0; i != sentences.Length; i++)
            {
                //тут хранятся все подпредложения
                string[] subSentences = sentences[i].Trim().Split(',');
                text00[i] = new char[subSentences.Length][][];
                for (int ii = 0; ii != subSentences.Length; ii++)
                {
                    //тут хранятся все слова
                    string[] words = subSentences[ii].Trim().Split(' ');
                    text00[i][ii] = new char[words.Length][];
                    for (int iii = 0; iii != words.Length; iii++)
                    {
                        text00[i][ii][iii] = words[iii].ToCharArray();
                    }
                }
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5
Похожие ответы