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

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

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

Я наверное плохо еще разбираюсь в массивах но мне кажется что для моей задачи надо использовать "рваный" массив. Сей час объясню задачу. Дана переменная
Листинг программы
  1. string text;
в ней различные предложения. Для примеру такое: "На право вниз, затем вперед. Ты куда? Остановись немедленно! Не остановился и домой пошел" (грамматика и смысл не имеют значения). Мне надо по каждому символу перебрать текст циклом for, например. Это я сделал:
Листинг программы
  1. for (int i1 = 0; i1 < text.Length; i1 += 1) // проверка всех символов
  2. {
  3. }
Далее мне надо заносить каждый символ в четырех мерный массив. n1 - символизирует количество предложений n2 - символизирует количество подпредложений в каждом предложении n3 - символизирует количество слов в в каждом подпредложении n3 - символизирует количество символов в каждом слове
Листинг программы
  1. if (text[i1] != ' ' && text[i1] != ',' && text[i1] != '.' && text[i1] != '!' && text[i1] != '?')
  2. {
  3. // то же предложение
  4. // то же подпредложение
  5. // то же слово
  6. n4++; // конец первой буквы, непеход на вторую
  7. }
  8. if (text[i1] == ' ')
  9. {
  10. // то же предложение
  11. // то же подпредложение
  12. n3++; // конец первого слова, непеход на второе
  13. n4 = 1;
  14. }
  15. if (text[i1] == ',')
  16. {
  17. // то же предложение
  18. n2++; // конец первого подпредложения, непеход на второе
  19. n3 = 1;
  20. n4 = 1;
  21. }
  22. if (text[i1] == '.' || text[i1] == '!' || text[i1] == '?')
  23. {
  24. n1++; // конец первого подпредложения, непеход на второе
  25. n2 = 1;
  26. n3 = 1;
  27. n4 = 1;
  28. }
как мне создать такой массив? я пробовал так:
Листинг программы
  1. int n1 = 1;
  2. int n2 = 1;
  3. int n3 = 1;
  4. int n4 = 1;
  5. for (int i1 = 0; i1 < text.Length; i1 += 1) // проверка всех символов
  6. {
  7. char[, , ,] text00 = new char[n1, n2, n3, n4];
  8. text00[n1, n2, n3, n4] = text[i1];
  9. if (text[i1] != ' ' && text[i1] != ',' && text[i1] != '.' && text[i1] != '!' && text[i1] != '?')
  10. {
  11. // то же предложение
  12. // то же подпредложение
  13. // то же слово
  14. n4++; // конец первой буквы, непеход на вторую
  15. }
  16. if (text[i1] == ' ')
  17. {
  18. // то же предложение
  19. // то же подпредложение
  20. n3++; // конец первого слова, непеход на второе
  21. n4 = 1;
  22. }
  23. if (text[i1] == ',')
  24. {
  25. // то же предложение
  26. n2++; // конец первого подпредложения, непеход на второе
  27. n3 = 1;
  28. n4 = 1;
  29. }
  30. if (text[i1] == '.' || text[i1] == '!' || text[i1] == '?')
  31. {
  32. n1++; // конец первого подпредложения, непеход на второе
  33. n2 = 1;
  34. n3 = 1;
  35. n4 = 1;
  36. }
  37. }
но не вышло. Еще раз, я наверное плохо разбираюсь в массивах. помогите новичку. P.S.: на то что знаки препинания и пробелы записываются первые символы отдельного слова и многие другие недоработки внимания не обращать, это временно. мне бы начало с массивом разобраться.

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

textual
Листинг программы
  1.             string text = "На право вниз, затем вперед. Ты куда? Остановись немедленно! Не остановился и домой пошел";
  2.             System.Text.RegularExpressions.Regex sentenceRegEx = new System.Text.RegularExpressions.Regex(@"[.!?]");
  3.  
  4.             //тут хранятся все предложения
  5.             string[] sentences = sentenceRegEx.Split(text);
  6.             char[][][][] text00 = new char[sentences.Length][][][];
  7.             for (int i = 0; i != sentences.Length; i++)
  8.             {
  9.                 //тут хранятся все подпредложения
  10.                 string[] subSentences = sentences[i].Trim().Split(',');
  11.                 text00[i] = new char[subSentences.Length][][];
  12.                 for (int ii = 0; ii != subSentences.Length; ii++)
  13.                 {
  14.                     //тут хранятся все слова
  15.                     string[] words = subSentences[ii].Trim().Split(' ');
  16.                     text00[i][ii] = new char[words.Length][];
  17.                     for (int iii = 0; iii != words.Length; iii++)
  18.                     {
  19.                         text00[i][ii][iii] = words[iii].ToCharArray();
  20.                     }
  21.                 }
  22.             }

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


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

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

14   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы