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

Замена данных в текстовом файле

26.06.2022, 21:10. Показов 2654. Ответов 44

Студворк — интернет-сервис помощи студентам
всем привет!
Помогите с такой задачей:
При нажатии на кнопку на форме, открывается заданный текстовый файл, находится заданная строчка на форме(Textbox1) и заменить ее переменной типа int, заданной на форме(Textbox2).
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.06.2022, 21:10
Ответы с готовыми решениями:

Поиск в текстовом файле и замена и в файле xml
Имеется текстовый файл следующего типа FB-000002523202323...

Замена строки в текстовом файле
Здравствуйте. Много лазил по форуму, но так и не нашёл нужного мне способа, поэтому решил создать тему конкретно для него. Проблема...

Замена текста в текстовом файле
всем привет! помогите с такой задачей: при нажатии на кнопку на форме открыть заданный текстовый файл, найти в нем строчку (например...

44
3267 / 3334 / 558
Регистрация: 17.02.2019
Сообщений: 5,239
27.06.2022, 18:00
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от gamergik Посмотреть сообщение
но подскажи в чем моя ошибка тут,пожалуйста
Специально переписал на Visual Studio 2010. Попробуйте
Кликните здесь для просмотра всего текста
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
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public string Paths;
        public Boolean BoolOff;
 
        private void button1_Click(object sender, EventArgs e)
        {
            BoolOff = false;
            OpenFileDialog open = new OpenFileDialog();
            if (open.ShowDialog() == DialogResult.Cancel)
            {
                return;
            }
            Paths = open.FileName;
            if (System .IO.File .ReadAllLines (Paths ).Length == 0) //== default
            {
                MessageBox.Show("Пустой файл");
                return;
            }
            string[] Strs = System.IO.File.ReadAllLines(Paths);
 
            foreach (var S in Strs)
            {
                if (S.Contains(textBox1.Text))
                {
                    int indexS = Array.IndexOf(Strs, S);
                    string[] SplitS = S.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries);
                    SplitS[7] = textBox2.Text;
                    Strs[indexS] = string.Join(" ", SplitS);// (SplitS, " ");
                    BoolOff = true;
                    MessageBox .Show ("Заменили " + textBox1.Text + " на " + textBox2.Text);
                        return ;
                }
            }
            if (BoolOff ==false )
            {
                MessageBox .Show ("Строки нет");
                return ;
            }
        }
    }

Цитата Сообщение от gamergik Посмотреть сообщение
хороший код, но подскажи в чем моя ошибка тут,пожалуйста
Цитата Сообщение от gamergik Посмотреть сообщение
WriteAllLines я так поннимаю,что-то другое должно быть вместо этого
А где вы увидели WriteAllLines в коде? насчет Метод File.WriteAllLines посмотрите

Создайте в студии проект и перепишите код, который сверху в спойлере. Студия сама покажет подсказки что и где.
0
Эксперт .NET
 Аватар для Usaga
14727 / 9500 / 1362
Регистрация: 21.01.2016
Сообщений: 35,829
27.06.2022, 18:32
Цитата Сообщение от January29 Посмотреть сообщение
Специально переписал на Visual Studio 2010.
А можно было просто в проекте указать версию языка - 4.0 и всё)
0
3267 / 3334 / 558
Регистрация: 17.02.2019
Сообщений: 5,239
27.06.2022, 18:43
Цитата Сообщение от Usaga Посмотреть сообщение
указать версию языка - 4.0 и всё
так и там и там писал 4.0

Добавлено через 8 минут
только пока учусь(для себя), все пригодится
0
2296 / 1612 / 400
Регистрация: 26.06.2017
Сообщений: 4,774
Записей в блоге: 1
27.06.2022, 22:41
Лучший ответ Сообщение было отмечено gamergik как решение

Решение

Ну не знаю парни чего Вам предложенный мной вариант не понравился. Вот чуть доработал и всё, что нужно ТСу работает.
Чуть расширенный класс ветви.
Кликните здесь для просмотра всего текста
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;
 
namespace BranchDemo
{
    public class Branch : INotifyPropertyChanged
    {
        #region [Properties]
        
        public int Node1 { get; set; }
        public int Node2 { get; set; }
        public String coupler
        {
            get
            {
                return this.Node1.ToString() + " " + this.Node2.ToString();
            }
        }
        public int X1 { get; set; }
        public int Y1 { get; set; }
        public int X2 { get; set; }
        public int Y2 { get; set; }
 
        private double _value;
        public double Value
        {
            get
            {
                return this._value;
            }
            set
            {
                if (this._value != value)
                {
                    this._value = value;
                    NotifyPropertyChanged();
                }
            }
        }
 
        public String Mark { get; set; }
        public int Length { get; set; }
 
        #endregion
 
        public static Branch Parse(String data)
        {
            string[] SplitS = data.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries);
            Branch newBranch = new Branch();
            for (int i = 0; i < SplitS.Length; i++)
            {
                switch (i)
                {
                    case 1:
                        newBranch.Node1 = Convert.ToInt32(SplitS[i]);
                        break;
                    case 2:
                        newBranch.Node2 = Convert.ToInt32(SplitS[i]);
                        break;
                    case 3:
                        newBranch.X1 = Convert.ToInt32(SplitS[i]);
                        break;
                    case 4:
                        newBranch.Y1 = Convert.ToInt32(SplitS[i]);
                        break;
                    case 5:
                        newBranch.X2 = Convert.ToInt32(SplitS[i]);
                        break;
                    case 6:
                        newBranch.Y2 = Convert.ToInt32(SplitS[i]);
                        break;
                    case 7:
                        newBranch.Value = Convert.ToDouble(SplitS[i]);
                        break;
                    case 8:
                        newBranch.Mark = SplitS[i];
                        break;
                    case 9:
                        newBranch.Length = Convert.ToInt32(SplitS[i]);
                        break;
                }
            }
            return newBranch;
        }
 
        public event PropertyChangedEventHandler PropertyChanged;
 
        private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
 
        public override string ToString()
        {
            String sep = " ";
            return this.Node1.ToString() + sep + this.Node2.ToString() + sep +
                   this.X1.ToString() + sep + this.Y1.ToString() + sep +
                   this.X2.ToString() + sep + this.Y2.ToString() + sep +
                   this.Value.ToString() + sep + this.Mark + sep + this.Length.ToString();
        }
    }
}

Теперь попробуем это хозяйство использовать. Берём форму (см. рисунки) и вуаля!
Кликните здесь для просмотра всего текста
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
67
68
69
70
71
72
73
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
 
namespace BranchDemo
{
    public partial class MainForm : Form
    {
        List<Branch> branches; // Список ветвей
 
        public MainForm()
        {
            InitializeComponent();
        }
 
        private void LoadButton_Click(object sender, EventArgs e)
        {
            branches = getBranches(); // загружаем список ветвей
            VectorComboBox.DataSource = branches; // привяжем список ветвей к комбобоксу
            VectorComboBox.DisplayMember = "coupler"; // укажем какое свойство следует отображать
 
            ValueTextBox.DataBindings.Clear();
            // привяжем свойство Value текущего элемента списка к текстбоксу
            ValueTextBox.DataBindings.Add("Text", branches, "Value"); 
        }
 
        private void SaveButton_Click(object sender, EventArgs e)
        {
            saveBranches(branches);
        }
 
        private List<Branch> getBranches()
        {
            // Тут должна быть загрузка данных из файла, а пока заглушка
            // Ну лень мне!
            String[] Strs = {"Ветвь 2 4 300 200 520 190 30 АС-300 35",
                         "Ветвь 2 6 300 200 450 350 28 300 40",
                         "Ветвь 6 4 450 350 520 190 25 300 42",
                         "Ветвь 6 5 450 350 620 300 23 300 50",
                         "Ветвь 4 5 520 190 620 300 27 300 33",
                         "Ветвь 2 7 300 200 330 340 31 240 38",
                         "Ветвь 7 8 330 340 190 330 32 240 39",
                         "Ветвь 8 2 190 330 300 200 40 300 37",
                         "Ветвь 2 3 300 200 415 60 28,91 300 45",
                         "Ветвь 4 1 520 190 550 40 43 300 47",
                         "Ветвь 3 1 415 60 550 40 28,91 300 44"};
 
            List<Branch> branches = new List<Branch>();
 
            for (int i = 0; i < Strs.Length; i++)
            {
                branches.Add(Branch.Parse(Strs[i]));
            }
 
            return branches;
        }
 
        private void saveBranches(IEnumerable<Branch> listOfBranch)
        {
            // Тут должна быть запись данных в файл, а пока заглушка
            // Ну лень мне! Просто покажу подход к сохранению
            StringBuilder sb = new StringBuilder();
 
            foreach (Branch item in listOfBranch)
            {
                sb.AppendLine(item.ToString()); //построчно пишем
            }
 
            MessageBox.Show(sb.ToString());
        }
    }
}

Отмечу, что в классе Branch интерфейс INotifyPropertyChanged реализован только у свойства Value. В принципе надо реализовать для всех свойств, но мне лениво
Миниатюры
Замена данных в текстовом файле   Замена данных в текстовом файле  
2
3267 / 3334 / 558
Регистрация: 17.02.2019
Сообщений: 5,239
27.06.2022, 22:57
Uswer, мне то понравился. Другим не знаю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.06.2022, 22:57

Замена символов в текстовом файле
Здрям! Помогите, пожалуйста, с кодом, ибо с массивами не дружу совсем. Есть текстовый файл, содержащий много повторяющегося текста....

Замена в текстовом файле строчных букв прописными, а прописных строчными
Требование к программе: 1.Текст программы представлен в электронном виде и должен включать постановку задачи. 2.Название переменных и...

Как создать базу данных имен людей и их описание, в текстовом файле (блокноте) для введения данных Stream.writer
Хочу создать базу данных для имен людей и их данных с помощью метода Stream.Writer и сохранить введеные данные в текстовый файл

Поиск в текстовом файле и выборка определенных данных
Нужно проверить весь файл на наличие нужных строк и тогда со строчек повыбирать нужные значения. Как отделить нужную часть строки знаю. А...

Реализовать следующие операции для данных находящихся в текстовом файле
В файл Files.txt записать сведения о файлах: указать название файла, размер, расширение и дату создания. Реализовать следующие...


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

Или воспользуйтесь поиском по форуму:
45
Ответ Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru