0 / 0 / 0
Регистрация: 17.04.2019
Сообщений: 2
1

Чтение txt через пробел и построчно в C#

17.04.2019, 18:15. Показов 421. Ответов 3
Метки нет (Все метки)

Мне необходимо считать текст таким образом, чтобы в матрицу заносились слова таким образом:
в матрице t[1,1]="меч", t[1,2]="ночь", t[2,1]="пляж" и тд... Уже измучился! Заранее спасибо)
1 2
1 меч ночь
2 пляж нож
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2019, 18:15
Ответы с готовыми решениями:

Чтение текста построчно из .txt
Есть файл .txt и вот его содержимое: http://site.ru/file1.rar Nazvanie1 http://site.ru/file2.rar...

Чтение чисел через пробел из одного textbox'a и перевод чисел в другой textbox
При выводе в textbox4 цикл for, все n раз, переводит из двоичной последовательности в десятичную...

Завершение процессов по кнопке, построчно, из TXT
В общем заморочился, 2й день пишу программу на C# для Windows. В общем пока еще мало что понимаю,...

Combobox , Textbox, информация из txt с разделителем - построчно
Задание в универе, к 28 августа надо эту работу сдать, я заочница и профессия на которую я учусь -...

3
227 / 164 / 110
Регистрация: 09.11.2015
Сообщений: 454
17.04.2019, 19:54 2
Kukuzyabra, показывайте наработки
0
0 / 0 / 0
Регистрация: 17.04.2019
Сообщений: 2
17.04.2019, 22:40  [ТС] 3
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
string[,] a = new string[20,5];
                    string line;
                    StreamReader s = new StreamReader("Tasks\\Tasks.txt");
                    int l;
                    l = 0;
                    int sr = 0;
                    int kk;
                    while ((line = s.ReadLine()) != null)
                    {
                        l++;
                        kk = line.IndexOf(' ');
                        if (line.Length > kk)
                        {
                            sr++;
                            a[l, sr] = line.Split(' '); //запись в массив, если в строке больше одного елемента
                            sr = 0;
                        }
                        else
                            a[l, 1] = line; //запись в массив, если в строке 1 элемент (слово)
                    }
                    s.Close();
Добавлено через 21 минуту
Но тут при a[1,1] показывает "пляж" а не "меч"
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
      string[,] a = new string[20,5];
                    string line;
                    StreamReader s = new StreamReader("Tasks\\Tasks.txt");
                    s.ReadLine();
                    int kk;
                    int l;
                    l = 0;
                    int sr = 0;
                    while ((line = s.ReadLine()) != null)
                    {
                        l++;
                        if (line.IndexOf(" ") < line.Length)
                        {
                            sr++;
                            kk = line.IndexOf(" ");
                            a[l, sr] = line.Substring(0, kk);
                            sr = 0;
                        }
                        else
                            a[l, 1] = line;
                    }
                    s.Close();
                    MessageBox.Show(a[1, 1]/*Convert.ToString(kk)*/);
Добавлено через 50 минут
Это работает правильно, но тогда в файле txt нужно отступить одну строчку (начинать писать нужно со второй)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
      string[,] a = new string[20,5];
                    string line;
                    StreamReader s = new StreamReader("Tasks\\Tasks.txt");
                    s.ReadLine();
                    int r = 0, k = 0;
                    int l;
                    l = 0;
                    int sr = 0;
                    while ((line = s.ReadLine()) != null)
                    {
                        l++;
                        if ((line.IndexOf(" ")) < line.Length)
                        {
                            line.Split();
                            while (line.Length-k>r)
                            {
                                sr++;
                                k = k + line.IndexOf(" ");
                                r = line.IndexOf(" ");
                                a[l, sr] = line.Substring(k-r,r);
                            }
                            sr = 0;
                        }
                        else
                            a[l, 1] = line;
                    }
                    s.Close();
Добавлено через 36 минут
Всё, разобрался! P.S.: в файле txt нужно отступить одну строчку для правильной работы (начинать писать нужно со второй)
Вот код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
                    string[,] a = new string[20,5];
                    string line;
                    StreamReader s = new StreamReader("Tasks\\Tasks.txt");
                    s.ReadLine();
                    int r = 0, k = 0;
                    int l;
                    l = 0;
                    int sr = 0;
                    while ((line = s.ReadLine()) != null)
                    {
                        r = line.IndexOf(" ");
                        l++;
                        if ((line.IndexOf(" ")) !=-1)
                        {
                            line.Split();
                            int f = line.Length;
                            while (f > k)
                            {
                                sr++;
                                k = k + line.IndexOf(" ");
                                r = line.IndexOf(" ");
                                if (sr >= 2)
                                    a[l, sr] = line.Substring(k - r - 1, r);
                                else
                                {
                                    a[l, sr] = line.Substring(k - r, r); k++;
                                }
 
                            }
                            sr = 0;
                            k = 0;
                        }
                        else
                            a[l, 1] = line;
                    }
                    s.Close();
0
227 / 164 / 110
Регистрация: 09.11.2015
Сообщений: 454
17.04.2019, 23:09 4
Kukuzyabra, не нужно ничего отступать. Массивы в C# индексируются с нуля
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.04.2019, 23:09

Чтение и запись в файл построчно
Есть 2 формы во второй находится куча текст боксов (7) из которых нужно записать в файл их значение...

Чтение из .txt построчно (ifstream)
Здравствуйте, возникли некоторые проблемы с ifstream. Не могу сделать чтение из .тхт файла...

Чтение txt файла построчно!
Возможно повторюсь, но вопрос вполне конкретен! Нужно, что бы при запуске программы автоматически...

Чтение .txt построчно в MFC
Добрый день уважаемые форумчане! Второй день уже мучаюсь - не могу понять, как считать строку из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.