Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Sleid
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 19
1

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

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

Помогите кто знает, облазит уж точно половину 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)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2015, 19:48
Ответы с готовыми решениями:

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

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

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

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

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

6
Даценд
Модератор
Эксперт .NET
5144 / 4377 / 2827
Регистрация: 20.04.2015
Сообщений: 7,880
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
Sleid
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
5144 / 4377 / 2827
Регистрация: 20.04.2015
Сообщений: 7,880
20.10.2015, 20:49 4
Цитата Сообщение от Sleid Посмотреть сообщение
Это лучше всего подходит
так не удалится последняя строка. Нужно обе строки удаления использовать.
0
Sleid
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
5144 / 4377 / 2827
Регистрация: 20.04.2015
Сообщений: 7,880
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
Sleid
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 19
20.10.2015, 21:57  [ТС] 7
Спасибо! всё работает!
0
20.10.2015, 21:57
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2015, 21:57

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

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.