Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
9 / 1 / 0
Регистрация: 08.12.2012
Сообщений: 34

Редактирование данных в файле

08.02.2014, 23:11. Показов 4090. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть файл после парсинга сайта, в котором информация лежит в таком виде: 02/02/2014 19:03:43
Apple iPad Air 128Gb Wi-Fi + Cellular в*интернет-магазинах – Планшеты – Яндекс.Маркет

ОНЛАЙН ТРЕЙД (ННОВ)**144*отзыва Адреса магазинов Все предложения*2
SotMarket.ru**743*отзыва Адреса магазинов
AppLand**64*отзыва Адреса магазинов
СВЯЗНОЙ Н.Новгород**486*отзывов Адреса магазинов Все предложения*2
ЭЛЬДОРАДО**332*отзыва Адреса магазинов Все предложения*2
Фотосклад.ру**147*отзывов Адреса магазинов Все предложения*2
Ситилинк**3650*отзывов Адреса магазинов
ULMART.ru**249*отзывов Адреса магазинов Все предложения*2
TechPort.ru**122*отзыва Все предложения*2
Белый Ветер**41*отзыв Адреса магазинов
36*490
38*190
34*990
36*990
36*989
32*990
36*990
36*990
37*590
36*990
02/02/2014 19:04:39
Apple iPad Air 128Gb Wi-Fi + Cellular в*интернет-магазинах – Планшеты – Яндекс.Маркет

Sotomix.ru**16*отзывов Адреса магазинов
Ютинет.Ру**250*отзывов Адреса магазинов Все предложения*2
MADapple**42*отзыва Адреса магазинов Все предложения*2
М.ВИДЕО**323*отзыва Адреса магазинов Все предложения*2
Комуснаписать отзыв Адреса магазинов Все предложения*2
istorennнаписать отзыв Адреса магазинов Все предложения*2
LightAnimal - NN**2*отзыва Все предложения*2
iPhoriya**23*отзыва Адреса магазинов Все предложения*2
Магазин Люкс**321*отзыв Все предложения*2
003.ru**3998*отзывов Все предложения*2
36*990
37*120
34*990
36*990
36*990
35*900
34*400
35*900
33*990
35*440
02/02/2014 19:04:57
Apple iPad Air 128Gb Wi-Fi + Cellular в*интернет-магазинах – Планшеты – Яндекс.Маркет
..... и т.д.
Надо написать прогу, которая отредактирует инфу так, чтобы после названия магазинов (ОНЛАЙН ТРЕЙД (ННОВ),Sotomix.ru,Ютинет.Ру,) удалились информация о отзывах и т.д. И применить это ко всем строкам с названием магазинов. Подскажите как это сделать или хотя бы где прочитать про это.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.02.2014, 23:11
Ответы с готовыми решениями:

Редактирование данных в xml файле
Доброго времени суток. Нужно редактировать данные, но я явно что-то делаю не так, так как порчу файл. В чём проблема? <?xml...

Редактирование двоичных данных в файле
подскажите пожалуйста, как можно измениь 28 байт в файле с 01 на 00. Open "myFile" For Binary Access Write As #1?? а дальше?

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

26
08.02.2014, 23:41

Не по теме:

Есть капитан! Пойду решать Вашу проблему!! Подключу все свои связи, день и ночь буду стараться, чтобы решить Вашу задачу!!!

0
9 / 1 / 0
Регистрация: 08.12.2012
Сообщений: 34
08.02.2014, 23:53  [ТС]
Jetu, Спасибо за столь скорый отклик!!1 Жду результатов!
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
09.02.2014, 15:43
Java
1
2
3
4
5
6
7
8
9
10
        String[] str = {"AppLand**64*отзыва Адреса магазинов",
                "Фотосклад.ру**147*отзывов Адреса магазинов Все предложения*2",
                "Белый Ветер**41*отзыв Адреса магазинов",
                "36*990",
                "02/02/2014 19:04:39 "};
 
        for (int i = 0; i < str.length; i++) {
            str[i] = str[i].replaceAll("\\*\\*[0-9]+.+", "");
            System.out.println(str[i]);
        }
на выходе
AppLand
Фотосклад.ру
Белый Ветер
36*990
02/02/2014 19:04:39
2
9 / 1 / 0
Регистрация: 08.12.2012
Сообщений: 34
16.02.2014, 11:47  [ТС]
tankomaz, Проблема в том, что в файле между словами и цифрами нет * , вместо * пробелы. Как в таком случае удалить лишнюю инфу?
0
 Аватар для reisal78
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
16.02.2014, 13:35
Laptev Alex, а зачем тогда вы в первом посте поставили * ?
0
9 / 1 / 0
Регистрация: 08.12.2012
Сообщений: 34
16.02.2014, 13:47  [ТС]
reisal78,Это сайт так преобразовал)
Но я уже сам разобрался, как изменить код)
0
46 / 36 / 15
Регистрация: 05.02.2014
Сообщений: 140
16.02.2014, 13:54
"\\d*+\\sотзыв.+"
Вот так будет искать нормально.
0
9 / 1 / 0
Регистрация: 08.12.2012
Сообщений: 34
17.02.2014, 21:40  [ТС]
tankomaz, При запуске
Java
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
import java.util.Scanner;
 
 
public class Clean {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        Scanner s = new Scanner("d.txt");
        while(s.hasNext()){
           s.nextLine();
        }
        
        
         String line = s.nextLine();
            String[] str = line.split(" ");
        
 
        for (int i = 0; i < str.length; i++) {
            str[i] = str[i].replaceAll("\\ \\ [0-9]+.+", "");
            System.out.println(str[i]);
        }
    }
 
}
компилятор выдает
Java
1
2
3
Exception in thread "main" java.util.NoSuchElementException: No line found
    at java.util.Scanner.nextLine(Scanner.java:1585)
    at Clean.main(Clean.java:15)
Что не так?
0
46 / 36 / 15
Регистрация: 05.02.2014
Сообщений: 140
17.02.2014, 22:07
Цитата Сообщение от Laptev Alex Посмотреть сообщение
Что не так?
Сначала промотал файл сканером до конца, никуда не записываю значения. Потом вызвал String line = s.nextLine(); когда s.hasNext() уже false. Вот и ошибка.
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
17.02.2014, 22:17
Laptev Alex, начните со сканера
Java
1
2
3
4
        Scanner s = new Scanner(new FileInputStream("d.txt"));
        while(s.hasNext()){
            System.out.println(s.nextLine());
        }
это было раз.

2) s.readLine(); уже не будет читать с консоли - while дошел до конца файла, в вашем случае строки нужно аккумулировать
3) все последующие действия не будут выполнены по причинам свыше

Добавлено через 2 минуты
вообщем примерно должно иметь вид такой
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    public static void main(String[] args) throws FileNotFoundException {
        // TODO Auto-generated method stub
 
        Scanner s = new Scanner(new FileInputStream("D:\\d.txt"));
        StringBuilder stringBuilder = new StringBuilder();
        while(s.hasNext()){
            stringBuilder.append(s.nextLine());
            stringBuilder.append("\n");
        }
 
        String[] str = stringBuilder.toString().trim().split(" ");
 
 
        for (int i = 0; i < str.length; i++) {
            str[i] = str[i].replaceAll("\\ \\ [0-9]+.+", "");
            System.out.println(str[i]);
        }
    }
0
9 / 1 / 0
Регистрация: 08.12.2012
Сообщений: 34
17.02.2014, 22:17  [ТС]
RomanovD, убрал цикл
Java
1
2
3
 while(s.hasNext()){
           s.nextLine();
        }
теперь выводит название файла - d.txt. Что за?
0
46 / 36 / 15
Регистрация: 05.02.2014
Сообщений: 140
17.02.2014, 22:20
Цитата Сообщение от tankomaz Посмотреть сообщение
String[] str = stringBuilder.toString().trim().split(" ");
а разве не по \n надо сплитить?
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
17.02.2014, 22:29
RomanovD, хз, автор хочет сплитить по пробелу, вдруг так нужно

Добавлено через 1 минуту
а вообще если нужны строки изолированные "по самое немогу", то предпочитаю вовсе вот так делать
Java
1
2
3
4
        List<String> list = Files.readAllLines(Paths.get("D:\\d.txt"), Charset.forName("UTF-8"));
        for (String s : list) {
            System.out.println(s);
        }
Добавлено через 4 минуты
"как-то так"(с)
гулять так гулять

Java
1
2
3
4
        List<String> list = Files.readAllLines(Paths.get("D:\\d.txt"), Charset.forName("UTF-8"));
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i).replaceAll("\\ \\ [0-9]+.+", ""));
        }
Добавлено через 2 минуты
извиняюсь, немного не учел момент, исправленная версия
Java
1
2
3
4
5
6
        List<String> list = Files.readAllLines(Paths.get("D:\\d.txt"), Charset.forName("UTF-8"));
        for (int i = 0; i < list.size(); i++) {
            list.set(i, list.get(i).replaceAll("\\ \\ [0-9]+.+", ""));
        }
 
        System.out.println(list);
0
9 / 1 / 0
Регистрация: 08.12.2012
Сообщений: 34
18.02.2014, 16:08  [ТС]
tankomaz, После компиляции
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static void main(String[] args) throws FileNotFoundException {
        // TODO Auto-generated method stub
 
        Scanner s = new Scanner(new FileInputStream("D:\\d.txt"));
        StringBuilder stringBuilder = new StringBuilder();
        while(s.hasNext()){
            stringBuilder.append(s.nextLine());
            stringBuilder.append("\n");
        }
 
        String[] str = stringBuilder.toString().trim().split(" ");
 
 
        for (int i = 0; i < str.length; i++) {
            str[i] = str[i].replaceAll("\\ \\ [0-9]+.+", "");
            System.out.println(str[i]);
        }
    }
он выдает инфу из файла, в которой каждая строка из первоначального файла просто разбивается на новые строки (но этого не нужно), а удаления
Java
1
2
3
4
 for (int i = 0; i < str.length; i++) {
            str[i] = str[i].replaceAll("\\ \\ [0-9]+.+", "");
            System.out.println(str[i]);
        }
почему-то вообще не происходит! Подскажи как исправить!
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
18.02.2014, 16:09
Laptev Alex, Редактирование данных в файле
0
9 / 1 / 0
Регистрация: 08.12.2012
Сообщений: 34
18.02.2014, 16:34  [ТС]
tankomaz, И на этот раз он не удаляет!
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.List;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
 
 
public class Clean {
 
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
    
        List<String> list = Files.readAllLines(Paths.get("d.txt"), Charset.forName("UTF-8"));
                for (int i = 0; i < list.size(); i++) {
                    list.set(i, list.get(i).replaceAll("\\ \\ [0-9]+.+", ""));
                }
         
                System.out.println(list);
        }
    }
Теперь он преобразовал весь текст в строку.
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
18.02.2014, 16:37
ну так видоизмените под свои нужны
Java
1
2
3
4
5
                List<String> list = Files.readAllLines(Paths.get("d.txt"), Charset.forName("UTF-8"));
                for (int i = 0; i < list.size(); i++) {
                    list.set(i, list.get(i).replaceAll("\\ \\ [0-9]+.+", ""));
                    System.out.println(list.get(i));
                }
0
9 / 1 / 0
Регистрация: 08.12.2012
Сообщений: 34
23.02.2014, 16:39  [ТС]
tankomaz, А как сделать, чтобы она читала из файла, а не стринг задавать?
Java
1
2
3
4
5
6
7
8
9
10
String[] str = {"AppLand  64 отзыва Адреса магазинов",
                "Фотосклад.ру  147 отзывов Адреса магазинов Все предложения 2",
                "Белый Ветер  41 отзыв Адреса магазинов",
                "36 990",
                "02/02/2014 19:04:39 "};
 
        for (int i = 0; i < str.length; i++) {
            str[i] = str[i].replaceAll("\\ \\ [0-9]+.+", "");
            System.out.println(str[i]);
        }


Пытался это реализовать вот так:
Java
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
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
 
 
public class Clean {
 
    public static void main(String[] args) throws FileNotFoundException {
        // TODO Auto-generated method stub
        
       
        File file = new File("/Users/Alex/d.txt");
        Scanner scanner = new Scanner(file);
        scanner.useDelimiter("\\Z");        
        String line = scanner.next();
        String[] str = line.split(" ");
    
 
    for (int i = 0; i < str.length; i++) {
        str[i] = str[i].replaceAll("\\d*+\\sотзыв.+","");
        System.out.println(str[i]);
    }
        
        scanner.close();
        
 
 
        }
    }
Но выводит не то, что надо. В d.txt инфа в том же виде.
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
23.02.2014, 20:34
Какова логика того, что вы делаете?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.02.2014, 20:34
Помогаю со студенческими работами здесь

Производить ввод и редактирование данных с сохранением в файле
По данным о наименовании товара, его цене, и кол-ву, разработать проект, позволяющий: 1)Производить ввод и редактирование данных с...

Производить ввод и редактирование данных с сохранением в файле
Производить ввод и редактирование данных с сохранением в файле.

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

Редактирование элемента в файле
Пишу программу телефонная книга, возникла проблема как удалять и редактировать контакты, дальше того чтобы гулять по списку контактов не...

Редактирование записей в файле
Подскажите идею редактирования записи в файле пожалуйста.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru