Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
12 / 1 / 3
Регистрация: 26.06.2016
Сообщений: 87

Удалить из файлов определенные символы

30.06.2016, 19:35. Показов 2075. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
необходимо сделать так чтобы в файле искались необходимые символы и потом из этого файла удалялось все что было до искомых символов + вся строка где нашлись эти символы (они всегда будут в одной строке).
И вторая часть задачи - опять же найти определенные символы и удалить все до конца файла начиная с этих символов.

Подскажите пожалуйста как все это можно реализовать?

Добавлено через 1 минуту
как выбрать путь к папке с файлами и построчно записать эти файлы в массив я знаю....
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.06.2016, 19:35
Ответы с готовыми решениями:

Удалить определенные символы из предложения
Здравствуйте! У меня есть предложение, которое я ввожу в textbox и, разделив по словам, записываю в массив: string text2 = new...

Удалить определенные символы из строки
Собственно в теме и вопрос, убрать это &nbsp Примеры строк такие Макдоналдс» подал в суд&nbsp на Роспотребнадзор РТ или ...

Удалить из строки определенные символы
Привет всем. В текстовом файле есть такие строки: 1s21a161hh2#yfatelz.net;sborka Нужно удалить символы от # (включая ее) до ; (не...

10
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
30.06.2016, 20:11
Futtoto, раз
Цитата Сообщение от Futtoto Посмотреть сообщение
как выбрать путь к папке с файлами и построчно записать эти файлы в массив я знаю....
То просто предложу это:
Предположим фаил содержит такой текст:
C#
1
string s = "123\n78197438 23n 971\n 98173_ 23n917387 1817 893723n19 837198 7\n1923n83908";
Ответ на 1:
C#
1
2
3
4
var a = s.Split('\n').ToList()
                .Select(x => {
                    return x.Contains("23n") ? x.Substring(x.IndexOf("23n") + "23n".Count()) : x;
                });
Ответ на 2:
C#
1
var b = s.Contains("173_") ? s.Remove(s.IndexOf("173_")) : s;
0
12 / 1 / 3
Регистрация: 26.06.2016
Сообщений: 87
30.06.2016, 20:40  [ТС]
мне нужно таким образом обрабатывать тысячи файлов с совершенно разным содержанием...

Добавлено через 2 минуты
текст, который надо искать будет иметь вид, например, "From 192.168.001.001 00025 To 192.168.001.020 00110" и нужно будет удалить все что было до искомого текста + ту строку, в которой был найден искомый текст

Добавлено через 20 минут
и нужно чтобы искалось не строгое значение, а маска символов, например слово From потом пробел, 3 цифры точка, 3 цифры точка, 3 цифры точка, 3 цифры пробел 5 цифр...
ну или не обязательно цифра, а можно использовать "любой символ"


Добавлено через 2 минуты
по причине того, что размер обрабатываемых файлов может достигать 10 Мбайт было бы неплохо после того как нашлась первая искомая комбинация и все необходимое удалилось (все что до этой комбинации + строка, в которой найдены искомые символы) прочитать тот же файл но только с конца, т.к. вторая часть задачи будет искаться в конце файла. Тем самым увеличится скорость обработки - не придется загружать весь файл в массив
0
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
30.06.2016, 20:41
Futtoto, и в чем проблема, тему открытия и перезаписи уже обсуждали... Могу научить как заменить одну строку другой.
C#
1
2
3
string s = "656567";
string b = " uiy iuy ";
s = b; // заменил
https://www.cyberforum.ru/post9328393.html
0
12 / 1 / 3
Регистрация: 26.06.2016
Сообщений: 87
30.06.2016, 20:46  [ТС]
проблема в том как задать маску для первой части задачи и как после выполнения первой части загрузить тот же файл только задом на перед (с конца) и только после выполнения второй части перейти к следующему файлу
0
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
30.06.2016, 21:16
Futtoto, изначально задача показалась немного иной.
Что насчет?


Тут строка получает результат:
C#
1
2
3
4
5
string s = "123\n78197438 23n 971\n 98173_ 23n917387 1817 893723n19 837198 7\n1923n";
            var str = "";
 
            s.Split('\n').ToList().TakeWhile(x => !x.Contains("173_"))
                .Where(x => !x.Contains("23n")).ToList().ForEach(x => str += x + '\n');
Тут список:
C#
1
2
3
4
5
string s = "123\n78197438 23n 971\n 98173_ 23n917387 1817 893723n19 837198 7\n1923n";
 
            var a = s.Contains("173_") ?
                s.Split('\n').ToList().TakeWhile(x=>!x.Contains("173_")).Where(x => !x.Contains("23n")):
                s.Split('\n').ToList();
Сразу решается 2 задачи.
0
12 / 1 / 3
Регистрация: 26.06.2016
Сообщений: 87
30.06.2016, 21:20  [ТС]
а что такое \n ??
0
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
30.06.2016, 21:50
Удалил после)).. Накасячил..

Даже проще, минутку, опять не так понял =)

Добавлено через 29 минут
Futtoto,
C#
1
2
3
4
5
6
7
string from = "192.168.001.001 00025";
            string to = "192.168.001.020 00110";
            string str = "192.168.001.001 00023\n192.168.001.001 00024\n192.168.001.001 00025\n192.168.001.001 00026\n192.168.001.001 00025\n192.168.001.001 00025\n192.168.001.001 00025\n192.168.001.020 00110\n192.168.001.020 00112";
 
            string result = "";
            str.Split('\n').ToList().TakeWhile(x => !x.Contains(to))
                .SkipWhile(x => !x.Contains(from)).ToList().ForEach(x => result += x + '\n');
Ну или:
C#
1
2
3
4
5
6
7
            string from = "192.168.001.001 00025";
            string to = "\n192.168.001.020 00110";
            string str = "192.168.001.001 00023\n192.168.001.001 00024\n192.168.001.001 00025\n192.168.001.001 00026\n192.168.001.001 00025\n192.168.001.001 00025\n192.168.001.001 00025\n192.168.001.020 00110\n192.168.001.020 00112";
 
 
            str = str.Remove(str.IndexOf(to) - 1);
            str = str.Substring(str.IndexOf(from) - 1);
0
12 / 1 / 3
Регистрация: 26.06.2016
Сообщений: 87
30.06.2016, 22:09  [ТС]
опять наверное не так поняли.... искомая комбинация символов не в начале файла, следовательно ее сначала нужно найти. потом удалить все что было до нее и и ту строку где найдена эта комбинация.

и как задать маску для поиска, а не строгое значение тотго что нужно найти?

Добавлено через 2 минуты
файл имеет вид:

апьаьпь 2 ьь 2 ьь ь
б бб
бб б вывпы п
From 192.168.001.001 00025 To 192.168.001.020 00110
dsgmmsd lgdlslg


должно получиться:
dsgmmsd lgdlslg

Добавлено через 9 минут
потом после dsgmmsd lgdlslg идет еще 10 Мбайт информации и в конце файла, например,

ывоаывоа оыва
ывалыл
End sksksksks
123123123123
123123

нужно удалить все начиная с End и до конца файла.

чтобы не считывать все 10 Мбайт было бы неплохо считать файл с конца чтобы быстрее найти искомые символы "End"

Добавлено через 1 минуту
в итоге должно получиться:

dsgmmsd lgdlslg

"бла-бла-бла...."

ывоаывоа оыва
ывалыл
0
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
30.06.2016, 23:12
Пост 8!!!

C#
1
2
3
4
5
6
            string from = "dsgmmsd lgdlslg";
            string to = "123123";
            string str = "апьаьпь 2 ьь 2 ьь ь\nб бб\nбб б вывпы п\nFrom 192.168.001.001 00025 To 192.168.001.020 00110\ndsgmmsd lgdlslg\nывоаывоа оыва\nывалыл \nEnd sksksksks\n123123123123\n123123";
 
            str.Split('\n').ToList().TakeWhile(x => !x.Contains(to) ? true : x.Length != to.Length ? true : false)
                .SkipWhile(x => !x.Contains(from)).ToList().ForEach(x => Console.WriteLine(x));
0
12 / 1 / 3
Регистрация: 26.06.2016
Сообщений: 87
01.07.2016, 10:11  [ТС]
да что ж такое ? )))
я не могу знать в каком месте файла будет то что мне нужно найти и соответственно не могу знать какие соседние символы будут с теми какие я задам для поиска

Добавлено через 7 минут
повторю пошагово что нужно сделать...

1. часть:
- ввести определенный набор символов по маске (чтобы любой символ можно было заменить вопросом);
- найти этот набор символов в определенном файле;
- удалить все от начала файла до этих символов;
- удалить строку, в которой нашлись искомые символы.

2. часть:
в силу того, что файлы могут достигать размера вплоть до 10 Мбайт было бы разумно прочитать тот же файл (где выполнялась 1. часть задачи) начиная с последней строки (т.к. вторая искомая комбинация символов будет в конце файла) чтобы не записывать все 10 Мбайт в массив.

- ввести определенный набор символов;
- найти этот набор символов в том же файле где выполнялась 1. часть задачи;
- удалить всё начиная с этих символов и до конца файла;
- сохранить обрезанный файл;
- перейти к следующему файлу для выполнения задачи.

Добавлено через 1 час 48 минут
по идее


string from = "dsgmmsd lgdlslg";
string to = "123123";
string str = "апьаьпь 2 ьь 2 ьь ь\nб бб\nбб б вывпы п\nFrom 192.168.001.001 00025 To 192.168.001.020 00110\ndsgmmsd lgdlslg\nывоаывоа оыва\nывалыл \nEnd sksksksks\n123123123123\n123123";

str.Split('\n').ToList().TakeWhile(x => !x.Contains(to) ? true : x.Length != to.Length ? true : false)
.SkipWhile(x => !x.Contains(from)).ToList().ForEach(x => Console.WriteLine(x));

должно работать НО опять же только в Юникоде.... а у меня файлы могут быть в любой кодировке

Добавлено через 4 минуты
остается решить проблему, заключающуюся в том, что бы найти как поделить строки (по символу переноса строки в Юникоде не прокатывает, т.к. в других кодировках символ другой)

Добавлено через 1 час 15 минут
может перед тем как загонять файл в строчный массив его перекодировать в Юникод, а после обрезания ненужных частей вернуть ему исходную кодировку?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.07.2016, 10:11
Помогаю со студенческими работами здесь

Удалить из строки все заранее определенные символы
Есть ли в Net средства для того чтобы из строки удалить все заранее определенные символы?

Удалить строки из файла, содержащие определенные символы
Здравствуйте. Помогите пожалуйста реализовать. Есть файл, допустим в нём около 1 млн. строк. Мне нужно удалить строки? содержащие...

Извлечь определенные символы из строки и просуммировать их.
Всем привет. Есть строки 2010-06-25 05:13:52 10.4.4.101 POST /SPACE1/ISwitchMemberCtxSvcFacade.rem - 80 - 10.4.4.63...

Убрать из текстового файла определенные символы
Доброго времени суток,друзья!Имеется некий текстовый файл,состоящий из цифр,букв и сиволов "<" и ">".Нужно...

Конвертация из string в byte[], исключая определенные символы
Здравствуйте, как мне из string "\x70\x00\xA7\x1A\xCD" сделать byte = {0x70,0x00,0xA7,0x1A,0xCD} я сделал функцию, но она...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru