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

Полное удаление строки текстового файла

20.10.2015, 19:48. Показов 2139. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите кто знает, облазит уж точно половину C# Cyberфорума, ничего не нашел подомного
имеется текстовый документ (порядка 180 различных имён) из этого списка всего 10 имён случайно попадают в 10 лабелов
они не повторяются
(Отдельное спасибо Даценд)
labels - массив label'ов
C#
1
2
3
4
5
6
7
8
9
10
11
Label[] labels={ Label1, Label2, Label3, Label4, Label5, Label6, Label7, Label8, Label9, Label10 };
string[] s = File.ReadAllLines("file.txt", Encoding.Default);
List<string> list = s.ToList<string>();
Random rnd = new Random();
int nameNumber;
for (int i = 0; i < labels.Length; i++)
{
    nameNumber = rnd.Next(0, list.Count);
    labels[i].Text = list[nameNumber];
    list.RemoveAt(nameNumber);
}
Помогите реализовать так, чтобы все эти 10 Имён удалялись(строчно) из file.txt
т.е, чтобы не оставалось пустых строк, так как они учитываются при случайном выборе новых
а это мешает.
а если кто знает как добавить фильтр чтоб пустые строчки не участвовали в случайном выборе, то и удаление не нужно!!!

удалять(заменять пытался так) но строчки пустые строки остаются
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
                string str = string.Empty;
                using (System.IO.StreamReader reader = System.IO.File.OpenText("file.txt"))
                {
                    str = reader.ReadToEnd();
                }
                str = str.Replace(Label1.Text, "");
                str = str.Replace(Label2.Text, "");
                str = str.Replace(Label3.Text, "");
                str = str.Replace(Label4.Text, "");
                str = str.Replace(Label5.Text, "");
                str = str.Replace(Label6.Text, "");
                str = str.Replace(Label7.Text, "");
                str = str.Replace(Label8.Text, "");
                str = str.Replace(Label9.Text, "");
                str = str.Replace(Label10.Text, "");
 
                using (System.IO.StreamWriter file = new System.IO.StreamWriter("file.txt"))
                {
                    file.Write(str);
                }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2015, 19:48
Ответы с готовыми решениями:

Удаление строки из текстового файла
Здравствуйте, нужно удалить все четные числа из файла .txt. Не могу никак найти удаление строки из...

Удаление строки из текстового файла
Здравствуйте, помогите исправить проблему, есть программа которая при запуске записывает данные в...

Удаление строки с номером k из текстового файла
Пожалуйста, помогите с задачей: &quot;Дано число k и текстовый файл. Удалить из файла строку с номером...

Из строки, содержащей полное имя файла, выделить расширение
Помогите пожалуйста.. Дана строка, содержащая полное имя файла, то есть имя диска, список...

6
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
20.10.2015, 20:33 2
А если так удалять?
C#
1
2
3
4
5
for (int i = 0; i < labels.Length; i++)
{
   str = str.Replace("\r\n" + labels[i].Text, string.Empty); //из середины
   str = str.Replace(labels[i].Text + "\r\n", string.Empty); //если совпала первая строка файла
}
1
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 19
20.10.2015, 20:44  [ТС] 3
C#
1
str = str.Replace(labels[i].Text + "\r\n", string.Empty); //если совпала первая строка файла
Это лучше всего подходит, из 30 слов, после 3 раз генерации(удалений) остаются 3 слова
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
20.10.2015, 20:49 4
Цитата Сообщение от Sleid Посмотреть сообщение
Это лучше всего подходит
так не удалится последняя строка. Нужно обе строки удаления использовать.
0
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 19
20.10.2015, 20:57  [ТС] 5
Цитата Сообщение от Даценд Посмотреть сообщение
так не удалится последняя строка. Нужно обе строки удаления использовать.
если использовать вот так вот
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
            Label[] labels = { metroLabel1, metroLabel2, metroLabel3, metroLabel4, metroLabel5, metroLabel6, metroLabel7, metroLabel8, metroLabel9, metroLabel10 };
            string[] s = File.ReadAllLines(@"Source" + "" + "file.txt", Encoding.Default);
            //string[] s = File.ReadAllLines(@"Source" + "" + "file.txt", Encoding.Default).Where(line => string.IsNullOrEmpty(line)).ToArray();
            List<string> list = s.ToList<string>();
            Random rnd = new Random();
            int nameNumber;
            for (int i = 0; i < labels.Length; i++)
            {
                nameNumber = rnd.Next(0, list.Count);
                labels[i].Text = list[nameNumber];
                list.RemoveAt(nameNumber);
            }
             
                string str = string.Empty;
                using (System.IO.StreamReader reader = System.IO.File.OpenText(@"Source" + "" + "file.txt"))
                {
                    str = reader.ReadToEnd();
                }
                for (int i = 0; i < labels.Length; i++)
                {
                    str = str.Replace("\r\n" + labels[i].Text, string.Empty); //из середины
                    str = str.Replace(labels[i].Text + "\r\n", string.Empty); //если совпала первая строка файла
                }
 
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"Source" + "" + "file.txt"))
                {
                    file.Write(str);
                }
то из списка file.txt
Кликните здесь для просмотра всего текста
NAME1
NAME2
NAME3
NAME4
NAME5
NAME6
NAME7
NAME8
NAME9
NAME10
NAME11
NAME12
NAME13
NAME14
NAME15
NAME16
NAME17
NAME18
NAME19
NAME20

останется не 10 слов а
Кликните здесь для просмотра всего текста
NAME1
NAME3
NAME5
NAME6
NAME7
NAME8
NAME10
NAME12
NAME14
NAME150

Добавился 0
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
20.10.2015, 21:04 6
Лучший ответ Сообщение было отмечено Sleid как решение

Решение

Sleid,
ну вы, блин, даете (С).
Код, который я когда-то предложил достаточно дополнить 2-мя строчками для удаления из файла.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
Label[] labels={ Label1, Label2, Label3, Label4, Label5, Label6, Label7, Label8, Label9, Label10 };
string[] s = File.ReadAllLines("file.txt", Encoding.Default);
List<string> list = s.ToList<string>();
Random rnd = new Random();
int nameNumber;
for (int i = 0; i < labels.Length; i++)
{
    nameNumber = rnd.Next(0, list.Count);
    labels[i].Text = list[nameNumber];
    list.RemoveAt(nameNumber);
}
s = list.ToArray<string>(); //превращаем лист в массив
File.WriteAllLines("file.txt", s); //записываем массив обратно
1
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 19
20.10.2015, 21:57  [ТС] 7
Спасибо! всё работает!
0
20.10.2015, 21:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2015, 21:57
Помогаю со студенческими работами здесь

Удаление ссылок из текстового файла
здравствуйте, возник такой вопрос как удалить с текстового файла все ссылки или заменить их,...

Удаление из текстового файла определённых строк
Вот написал код. Смысл его: нужно найти в текстовом файле определённое словосочетание. Если оно...

Выделить из строки, содержащей полное имя файла, название последнего каталога
Дана строка, содержащая полное имя файла. Выделить из этой строки название последнего каталога (без...

Удаление строки из текстового файла
Добро всем! :senor: У меня возникла задача удалить из txt, тоесть выбираю строку в мемо затем...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru