|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Замена одного значения подстроки на другое |
|
.NET - Замена одного значения подстроки на другое
|
Новый участник Сообщения: 4 |
необходимо сделать следующее:
- на форме должны быть 2 кнопки ("Обзор" и "Заменить"), 2 текстбокса ("Что найти" и "На что заменить"); - по нажатию на кнопку "Обзор" появляется меню, где выбирается путь к папке с файлами (вроде через OpenFileDialog можно сделать); - в текстбоксе "Что найти" указываем то что нужно искать в файле, в текстбоксе "На что заменить" указываем на что нужно заменить то, что указали в текстбоксе "Что найти"; - по нажатию на кнопку "Заменить" каждый файл из выбраной папки построчно считывается, ищется то что было в текстбоксе "Что найти", заменяется на то что было в текстбоксе "На что заменить" и файл сохраняется. И так необходимо сделать со всеми файлами выбранной папки. |
|
Отправлено: 21:32, 26-06-2016 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Futtoto, что из перечисленного Вы уже реализовали? Что вызывает затруднения?
|
Отправлено: 22:40, 26-06-2016 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать создал форму, на ней разместил 2 кнопки и 2 текстбокса.
по нажатию на кнопку Обзор появляется меню и можно выбрать папку с файлами. далее двум строкам присвоил значения того что вводится в текстбоксы: string find = textBox1.Text; string replaceFind = textBox2.Text; что делать дальше не знаю (( по идее нужно создать массив и поместить туда все файлы из выбранной папки, затем выполнить цикл, в котором каждый файл из массива будет открываться, в нем искаться значение из текстбокса "Что найти", заменяться на то что было в текстбоксе "На что заменить" using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace Zamena { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string find = textBox1.Text; string replaceFind = textBox2.Text; string fullFileName; using (OpenFileDialog dlg = new OpenFileDialog()) { if (dlg.ShowDialog() == DialogResult.OK) fullFileName = dlg.FileName; } } private void textBox1_TextChanged(object sender, EventArgs e) { } private void textBox2_TextChanged(object sender, EventArgs e) { } private void button2_Click(object sender, EventArgs e) { } } } |
Отправлено: 23:15, 26-06-2016 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Вам нужен не OpenFileDialog - класс (System.Windows.Forms), а FolderBrowserDialog - класс (System.Windows.Forms). Создавать массив не нужно совершенно, нужно рекурсивно пройтись по всем каталогам, начиная с выбранного, перебирая файлы. Во время перебора именно так:
Цитата Futtoto:
|
|
Отправлено: 00:34, 27-06-2016 | #4 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать ну а как это все сделать? покажите пожалуйста пример кода. я совсем-совсем новичок в программировании, меня никто не учил... все что нужно пытаюсь нагуглить, но пока безуспешно((
|
|
Отправлено: 06:40, 27-06-2016 | #5 |
Забанен Сообщения: 793
|
Цитата Futtoto:
using System; using System.IO; using System.Linq; using System.Text; using System.Drawing; using System.Reflection; using System.Windows.Forms; using System.Text.RegularExpressions; [assembly: AssemblyTitle("Replacing")] namespace Replacing { internal sealed class AssemblyInfo { private Type a; internal AssemblyInfo() { a = typeof(Program); } internal String Title { get { return ((AssemblyTitleAttribute)Attribute.GetCustomAttribute( a.Assembly, typeof(AssemblyTitleAttribute) )).Title; } } } internal sealed class frmMain : Form { public frmMain() { InitializeComponent(); this.Text = new AssemblyInfo().Title; } private String folder; //здесь хранится путь до выбранной папки private Label lblLabel1; private Label lblLabel2; private TextBox txtBox1; private TextBox txtBox2; private Button btnButton1; private Button btnButton2; private void InitializeComponent() { this.lblLabel1 = new Label(); this.lblLabel2 = new Label(); this.txtBox1 = new TextBox(); this.txtBox2 = new TextBox(); this.btnButton1 = new Button(); this.btnButton2 = new Button(); // //lblLabel1 // this.lblLabel1.Height = 13; this.lblLabel1.Location = new Point(7, 7); this.lblLabel1.Text = "Что ищем:"; // //lblLabel2 // this.lblLabel2.Height = 13; this.lblLabel2.Location = new Point(7, 51); this.lblLabel2.Text = "На что заменяем:"; // //txtBox1 // this.txtBox1.Location = new Point(7, 25); this.txtBox1.Width = 313; // //txtBox2 // this.txtBox2.Location = new Point(7, 69); this.txtBox2.Width = 313; // //btnButton1 // this.btnButton1.Location = new Point(33, 101); this.btnButton1.Text = "Обзор..."; this.btnButton1.Click += (s, e) => { using (FolderBrowserDialog fbd = new FolderBrowserDialog()) { if (fbd.ShowDialog() == DialogResult.OK) { folder = fbd.SelectedPath; } } }; // //btnButton2 // this.btnButton2.Location = new Point(213, 101); this.btnButton2.Text = "Заменить"; this.btnButton2.Click += (s, e) => { if (String.IsNullOrEmpty(folder) || String.IsNullOrEmpty(txtBox1.Text) || String.IsNullOrEmpty(txtBox2.Text)) { MessageBox.Show( "Ничего не выбрано, идите лесом!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error ); return; } foreach (String file in Directory.EnumerateFiles( folder, "*.txt", SearchOption.AllDirectories //ищем все txt файлы )) { String content = File.ReadAllText(file, Encoding.Default); String n_content = Regex.Replace(content, txtBox1.Text, txtBox2.Text); File.WriteAllText(file, n_content); } }; // //frmMain // this.ClientSize = new Size(330, 170); this.Controls.AddRange(new Control[] { this.lblLabel1, this.lblLabel2, this.txtBox1, this.txtBox2, this.btnButton1, this.btnButton2 }); this.FormBorderStyle = FormBorderStyle.FixedSingle; this.MaximizeBox = false; this.StartPosition = FormStartPosition.CenterScreen; } } internal sealed class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.Run(new frmMain()); } } } |
|
Отправлено: 11:20, 27-06-2016 | #6 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать у меня этот код нифига не работает... студия ошибки выдает
Ошибка 1 Пространство имен "WindowsFormsApplication6" уже содержит определение для "Program" Файл - D:\C#\WindowsFormsApplication6\WindowsFormsApplication6\Program.cs Ошибка 2 "WindowsFormsApplication6.Program": класс не может быть одновременно статическим и запечатанным Файл - D:\C#\WindowsFormsApplication6\WindowsFormsApplication6\Form1.cs |
Отправлено: 14:17, 27-06-2016 | #7 |
Забанен Сообщения: 793
|
Дык а голова на что? Код за Вас накидали, Вы его тупо скопипастили и пытаетесь собрать в тухлой VS, которая и нафиг не нужна: только место занимает, да жрет системные ресурсы. Собирайте из комстроки, например:
D:\proj> D:\Windows\Microsoft.NET\vXXXX\csc.exe /nologo /t:winexe /out:replacing.exe /optimize+ /debug:pdbonly replacing.cs Удачи! |
Отправлено: 17:08, 27-06-2016 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Подсчет слов и нахождение заданного слова, замена и его замена на другое. | zeroua | Скриптовые языки администрирования Windows | 9 | 13-06-2014 15:22 | |
CMD/BAT - [решено] Замена подстроки | micolo | Скриптовые языки администрирования Windows | 3 | 05-03-2014 15:58 | |
CMD/BAT - [решено] Сравнение файлов и замена значения из одного файла в другой. | Aleks911tat | Скриптовые языки администрирования Windows | 12 | 25-08-2012 22:27 | |
Использование - [решено] Как переоформить лицензию Майкрософт с одного ю.л. на другое? | chesster_os | Лицензирование продуктов Microsoft | 6 | 12-09-2011 14:57 | |
C/C++ - [решено] Поиск и замена в тексте (извлечение подстроки) | dima1981 | Программирование и базы данных | 10 | 21-03-2010 15:50 |
|