Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
16 / 16 / 1
Регистрация: 15.03.2009
Сообщений: 94

Считывание из файла и разделение содержимого на ликсемы

28.06.2010, 17:17. Показов 2052. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем создаю программку для просмотра CSV файлов. Почему то когда вызываю метод table, он печатает только три последних ячейки файла, т.е., как я понимаю, в массиве cells только три элемента, т.е. на лексемы получается поделена только последняя строка.

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
public class CSVRLib
    {
        public CSVRLib(string nameOfFile)
        {
            itsFileName = nameOfFile;
            
            if (!File.Exists(itsFileName))
            {
                Console.WriteLine("{0} does not exist.", itsFileName);
                return;
            }
 
            using (StreamReader file = File.OpenText(itsFileName))
            {
                string line;
 
                while ((line = file.ReadLine()) != null)                
                    cells = line.Split(new char[] { ';' });
            }
        }
 
        public void table()
        {
            for (int i = 0; i < cells.Length; i++)
            {
                Console.WriteLine(cells[i]);
            }        
        }
 
        private string itsFileName;
        private string [] cells;        
    }
С C# знаком всего лишь пару дней, после С++ как то не привычно...Помогите пожалуйста, дорогие формучане.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.06.2010, 17:17
Ответы с готовыми решениями:

Разделение содержимого файла
Всем привет! Необходима помощь в разделении содержимого файла. (.cfg) Имеется форма с разными полями(номер, имя, регион, цвет, тип) ...

Считывание с файла, разделение на слова
В текстовом файле записаны пары слов: термин английскими символами - перевод кириллицей(разделены 4 пробелами). Некоторые английские слова...

Считывание данных из файла и разделение на категории (JSON)
Ребят умоляю вас помочь, мне необходимо считать данные про книги с файла Book.xlsx перевести его в JSON и разделить эти книги на...

4
 Аватар для kirill29
2098 / 1263 / 173
Регистрация: 01.02.2009
Сообщений: 2,842
28.06.2010, 17:30
C#
1
2
3
4
5
6
7
using (StreamReader file = File.OpenText(itsFileName))
            {
                string line;
 
                while ((line = file.ReadLine()) != null)                
                    cells = line.Split(new char[] { ';' });
            }
Вот здесь не правильно. Ты в цикле while на каждом шаге заново инициализируешь и заполняешь массив cells => все твои предыдущие значения удаляются.
Можно сделать так:
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
37
38
using System;
using System.Collections.Generic;
using System.IO;
 
namespace ConsoleApplication3
{
    public class CSVRLib
    {
        public CSVRLib(string nameOfFile)
        {
            itsFileName = nameOfFile;
 
            if (!File.Exists(itsFileName))
            {
                Console.WriteLine("{0} does not exist.", itsFileName);
                return;
            }
 
            using (StreamReader file = File.OpenText(itsFileName))
            {
                string line;
 
                while ((line = file.ReadLine()) != null)
                    cells.AddRange(line.Split(new char[] { ';' }));
            }
        }
        private List<string> cells = new List<string>();
 
        public void table()
        {
            for (int i = 0; i < cells.Count; i++)
            {
                Console.WriteLine(cells[i]);
            }
        }
 
        private string itsFileName;
    }
1
16 / 16 / 1
Регистрация: 15.03.2009
Сообщений: 94
28.06.2010, 18:01  [ТС]
Спасибо огромное, kirill29!
У меня ещё вопрос - есть ли какой нибудь метод в классе string (знаю, нужно было бы MSDN полистать, но так быстрее, поэтому извините) что бы можно было б подсчитать количество определённых символов в строке?
Просто думаю нужно ж что бы все элементы открываемого файла не просто в столбик выводились, а примерно так же как в файле. Думаю взять первую строку, сосчитать сколько в ней сепараторов (разделителей) прибавить единичку и вуаля! У меня количество элементов в одной строке сохраняется в отдельную переменную.
Примерно выглядеть думаю должно так:
C#
1
2
3
4
5
6
7
8
9
10
public void table()
        {
            for (int i = 0; i < itsCells.Count; i++)
            {
                Console.WriteLine(itsCells[i]);
 
                if ((i + 1) % itsLineWidth == 0)
                    Console.WriteLine("\n");
            }
        }
Ну вот что бы и определить эту itsLineWidth мне и нужно вычислить количество сепараторов в строке. Хотя может кто нибудь предложить более путную идею реализации этого функционала?

Ещё вопрос - метод Console.WriteLine() постоянно пишет с новой строки, т.е. код, который я написал выше в моём случае (с моим *.csv файлом) напечатает следующее:

name1
name2
name3


1
4
7


2
5
8


3
6
9


соответственно хотелось бы что бы выглядело примерно так:

name1 name2 name3
1 4 7
2 5 8
3 6 9

т.е. что бы можно было напечатать несколько элементов в строку через, предположим, пробел, как в C++:
C++
1
2
3
4
5
6
7
for(int i = 0; i < itsLineWidth; i++)
{
  cout << itsCells[i] << " ";
 
  if((i+1)%itsLineWidth == 0)
    cout << endl;
}
0
 Аватар для kirill29
2098 / 1263 / 173
Регистрация: 01.02.2009
Сообщений: 2,842
28.06.2010, 18:12
Цитата Сообщение от G-Cat Посмотреть сообщение
т.е. что бы можно было напечатать несколько элементов в строку через, предположим, пробел,
Немного переделал:
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
public class CSVRLib
    {
        public CSVRLib(string nameOfFile)
        {
            itsFileName = nameOfFile;
 
            if (!File.Exists(itsFileName))
            {
                Console.WriteLine("{0} does not exist.", itsFileName);
                return;
            }
 
            using (StreamReader file = File.OpenText(itsFileName))
            {
                string line;
 
                while ((line = file.ReadLine()) != null)
                    cells.Add(line.Split(new char[] { ';' }));
            }
        }
        private List<string[]> cells = new List<string[]>();
 
        public void table()
        {
            for (int i = 0; i < cells.Count; i++)
            {
                for (int j = 0; j < cells[i].Length; j++)
                {
                    Console.Write(cells[i][j] + " ");
                }
                Console.WriteLine();
            }
        }
        private string itsFileName;
    }
Ну а количество элементов получаем соответственно так: cells[i].Lenght
0
16 / 16 / 1
Регистрация: 15.03.2009
Сообщений: 94
28.06.2010, 18:35  [ТС]
Спасибо огромное! Сначала просмотрел только метод table, не понял что изменилось, а потом только проверил весь класс целиком)
Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.06.2010, 18:35
Помогаю со студенческими работами здесь

Считывание содержимого Word файла
Всем привет. Нужно считать содержимое файла Word. Написанный ниже код делает все что нужно, есть только маленькая проблемка. Если при...

Считывание текстового содержимого exe файла
Программа считывает содержимое txt файлов, но отказывается считывать содержимое exe(выводит MZ?), как реализовать считывание exe файлов? ...

Упорядоченное считывание содержимого текстового файла в StringGrig таблицу
Здравствуйте уважаемые форумчанины. У меня есть текстовый файл например &quot;file.txt&quot; в котором записанны данные о сотрудниках ...

Разделение содержимого 1й ячейки на много в столбец в excel
Доброго времени суток, хочу спросить у вас можно ли разделить в excel 12значное число без пробелов в столбик как скриншоте. Я не очень...

Считывание содержимого из нескольких файлов
Доброго времени суток. Поискала в более ранних темах - не нашла. Суть проблемы вот в чем: у меня есть n текстовых файлов, которые надо...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru