Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 10.10.2016
Сообщений: 19

Как записывать текст в файл?

22.09.2017, 21:39. Показов 1505. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходима программа, которая будет считывать информацию из текста, но(!) есть нюанс. Текст в файле идет блоками, например

Школа №42
7 "А"
Тест по математике
Иванов И.И.
12321324121313

Школа №42
7 "Б"
Тест по математике
Петров П.П.
21342421121411

В итоговый файл необходимо записать так:

Школа №42 7 "А" Тест по математике Иванов И.И. 12321324121313
Школа №42 7 "Б" Тест по математике Петров П.П. 21342421121411

Вот код, который написал на коленке, но он толком не работает, что-то я туплю:

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
class Program
    {
        static void Main(string[] args)
        {
            string readPath = @"F:\Test\in.txt";
            string writePath = @"F:\Test\out.txt";
 
            TextWriter tw = new StreamWriter(writePath);
           
            using (StreamReader sr = new StreamReader(readPath, System.Text.Encoding.Default))
            {
                string line = "";
                string text = "";
 
                while ((line = sr.ReadLine()) != "End")
                {                   
                    for (var j = 0; j < 6; j++)
                    {
                        text = line + " ";
                    }
                    tw.WriteLine(text);
                    tw.WriteLine();
 
                    text = "";
 
                    if (line == "End")
                        return;
                }                
            }
        }
}
Может кто-то подскажет, в чем ошибка?
Вообще, идея состоит в том, чтобы сортировать потом эти тесты учеников по различным критериям (класс, предмет, алфавитный порядок фамилий и т.д.). Для этих целей я посчитал разумным, вот такую реализацию представления всей информации в одной строчке (а дальше уже сортировать с помощью регулярных выражений). Может всё можно сделать еще проще?

Добавлено через 5 минут
Если смотреть эту тему с мобильного, то может сложиться неправильное впечатление о том, что в итоговом файле ответы на тест идут на следующей строчке после "школа/класс/предмет/ученик". Это не так, все должно быть в одну строчку. Сайт неправильно отображает. С компа все корректно выглядит.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.09.2017, 21:39
Ответы с готовыми решениями:

Как в vb при нажатии клавиши на клав-е записывать текст в файл, .txt например
Хочу, чтобы при нажатии любой клавиши, мой текстовый файл изменялся. Как сделать? Вот текст проги: Option Strict On Public Class...

Записывать текст в исполняемый файл
В программе есть текстовая форма (Memo1 ) нужно чтобы после выключении программы все изменения текста записывались в exe-файл (т.е. не...

Как записывать в массив с 2 переменными текст
Как записывать в массив с 2 переменными,текст,тоесть есть массив mas, в а=&quot;привет&quot;, в b=&quot;пока&quot;;

5
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
23.09.2017, 00:08
Цитата Сообщение от EveresTGro Посмотреть сообщение
Для этих целей я посчитал разумным, вот такую реализацию представления всей информации в одной строчке (а дальше уже сортировать с помощью регулярных выражений).
Объединять, чтобы после разбивать?
Сделайте класс с полями "Школа", "Класс", "Тест", "ФИО", "Какие-то цифры". Считывайте из файла в поля, формируйте объекты, добавляйте их в коллекцию, например, в List. И сортируйте по критериям методом OrderBy от linq.
0
8 / 8 / 4
Регистрация: 11.02.2017
Сообщений: 100
23.09.2017, 02:12
можно сделать так
C#
1
2
3
4
5
6
7
8
9
10
            string[] text = File.ReadAllLines("in.txt", Encoding.Default);
            string outString = "";
            int count = 0;
 
            for (int i = 0; i < text.Length; i++)
            {
                outString += count != text.Length ? text[i] + " " : text[i];
                count++;
            }
            File.WriteAllText("out.txt", outString);
0
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
23.09.2017, 08:54
Лучший ответ Сообщение было отмечено EveresTGro как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
StringBuilder sbuilder = new StringBuilder ();
using (StreamReader reader = new StreamReader ("input.txt")) {
    while (!reader.EndOfStream) {                   
        string line = reader.ReadLine ();
        sbuilder.AppendFormat ("{0} ", line);
         // Не понятно как у вас блоки отделяются, здесь - пустая строка
        if (String.Empty.Equals (line)) 
            sbuilder.Append (System.Environment.NewLine);                       
    }
}
using (StreamWriter writer = new StreamWriter ("output.txt")) {
    writer.Write (sbuilder.ToString ());
}
1
0 / 0 / 0
Регистрация: 10.10.2016
Сообщений: 19
24.09.2017, 11:02  [ТС]
Спасибо большое!
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
25.09.2017, 11:57
Цитата Сообщение от EveresTGro Посмотреть сообщение
Может всё можно сделать еще проще?
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
using System;
using System.Linq;
using System.Collections.Generic;
using System.IO;
 
public class TestData
{
    public string School { set; get; }
    public string Class { set; get; }
    public string Test { set; get; }
    public string Name { set; get; }
    public string Code { set; get; }
    public TestData(string school, string cLass, string test, string name, string code)
    {
        School = school;
        Class = cLass;
        Test = test;
        Name = name;
        Code = code;
    }
    public override string ToString()
    {
        return string.Format("{0}\t{1}\t{2}\t{3}\t{4}", School, Class, Test, Name, Code);
    }
}
 
static class TestReader
{
    public static List<TestData> Read(string fileName)
    {
        List<TestData> list = new List<TestData>();
        using (StreamReader reader = new StreamReader(fileName, System.Text.Encoding.Default))
        {
            while (!reader.EndOfStream)
            {
                string school = reader.ReadLine();
                string cLass = reader.ReadLine();
                string test = reader.ReadLine();
                string name = reader.ReadLine();
                string code = reader.ReadLine();
                reader.ReadLine();
                list.Add(new TestData(school, cLass, test, name, code));
            }
        }
        return list;
    }
}
 
class Program
{
    static void Main(string[] args)
    {
        List<TestData> list = TestReader.Read(@"d:\file.txt");
        Console.WriteLine("Исходный файл:");
        foreach (TestData td in list)
            Console.WriteLine(td);
        Console.WriteLine("\nСортировка по школам:");
        List<TestData> list2 = list.OrderBy(x => x.School).ToList();
        foreach (TestData td in list2)
            Console.WriteLine(td);
        Console.WriteLine("\nСортировка по ФИО:");
        List<TestData> list3 = list.OrderBy(x => x.Name).ToList();
        foreach (TestData td in list3)
            Console.WriteLine(td);
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.09.2017, 11:57
Помогаю со студенческими работами здесь

Как записывать текст в определенную строку многострочного textBox-а?
Привет, всем! Есть многострочный textBox1, вопросы: 1. как записывать туда текст в определенную строку, например: требуется изменить...

Как записывать текст в txt из периодически генирирующейся переменной label
Здравствуйте. Нужна помощь. Есть программа голосового распознавания. Ключевые слова выводятся в label, с каждым новым распознованием...

Как создавать, записывать в файл
Добрый вечер!:) Подскажите пожалуйста, как создавать, записывать в файл, ввод имён файлов с клавиатуры, читение данных из файла. Если можно...

Как записывать в rtf файл
Пожалуйста, можно пример кода как записывать в rtf файл, или как работать с ним, за ранее спасибо

Как читать и записывать файл
Записал в файл миллион строк (числа от 1 до миллиона), построчное чтение при указании конкретной строки № 900 тыс. занимает 0,2 сек, что...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 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 Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru