Знакомство с тегами

  • 20
  • Недоступна
Считайте с консоли имя файла, который имеет HTML-формат. Первым параметром в метод main приходит тег. Например, «span». Вывести на консоль все теги, которые соответствуют заданному тегу. Каждый тег на новой строке, порядок должен соответствовать порядку следования в файле. Количество пробелов, n, r не влияют на результат.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (444)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Нюша Кристалова20 уровень, Кишинев
четверг, 07:53
Юху.... Слизала готовое решение.😭Ну какой из меня теперь программист. Чем больше изучаешь тем больше понимаешь что ничего не знаешь((
Alukard23 уровень, London
понедельник, 20:42
Без регулярок и Jsoup вышло на 44 строки, выглядит конечно не идеал, но с третьей попытки прошло) ideone
Zhan Peskov23 уровень, Москва
10 сентября, 11:16
Да уж, эту задачку можно решить с помощью Jsoup буквально в 6 строк, НО ... если как в примере тег будет перенесен частично на новую строку то суп уберет этот перенос и Валя не примет Сделал следующее считал весь файл в строку сделал паттерн "<(\\/?)" + args[0] + "\\b>?" далее если группа(1).длина == 0, значит открытый тег, иначе закрытый создал ArrayList где каждый элемент это массив int[] когда встречается открытый тег то добавляю в лист {начало, 0} если встречается закрытый тег то обрабатываю лист с конца пока не встречу второй элемент массива == 0 и пишу туда конец (это правильно отработает все одноименные теги как вложенные в друг друга, так и если такое вообще бывает то и идущие подряд но вложены в другой) В конце вывожу println fileData.substring(начало, конец) Вуаля
tbcarus20 уровень, Москва
10 сентября, 05:39
Конечно, не без подсматривания комментариев: 1. Через matcher нашёл все теги span. 2. Проверил это тег открывающийся или закрывающийся. 3. Начало открывающегося тега в ArrayList start, конец закрывающегося - в end. 4. Если и пока размеры списков совпадают и размер первого не равен 0, то вывожу подстроку от первого элемента списка start до последнего элемента списка end. После вывода эти записи из списков удаляются.
Zhan Peskov23 уровень, Москва
10 сентября, 11:03
не совсем понятно как такой код может работать когда позицию закрывающегося тега писать в обычный лист Ваш подход будет работать если не будет вложенных одноименных тегов
tbcarus20 уровень, Москва
10 сентября, 20:16
Начальная позиция открывающегося тега пишется в один лист, конечная позиция закрывающегося - во второй лист. То есть в листах (<>-</>) при просмотре строки из файла получается следующая картина: 1-0, 2-0, 2-1, 2-2. Как только длины листов равны и длина первого не равна 0, значит найдены позиции соответствующих открывающихся и закрывающихся тегов.
СЕРГЕЙ22 уровень, Киев
вторник, 16:08
Спасибо за идею start() и end() позапихивать в разные ArrayList. Не знал, с какой стороны подойти к решению. В итоге несложный и компактный код получился.
24 августа, 05:57
Решил задачу, потом стал смотреть, как это вообще на практике применяется, в итоге наткнулся на это видео: https://www.youtube.com/watch?v=sZgXUK5L3Ss&t=1557s
Иван20 уровень, Москва
20 августа, 09:21
Очень потная задача. Как решил: Находим первое последнее вхождение закрытого тега в тексте. Находим начало открытого тега. Получаем из этого строку. Проверяем, есть ли в строке ещё закрытые теги. Получаем рекурсию с выводом на экран. Удаляем полученную первую строку из текста и проверяем есть ли ещё закрытые теги, если нет закрываемся. Ловите: Для потомков Ну и хвалимся, конечно же:
Иван23 уровень, Нижний Новгород
12 августа, 13:23
Те кто принял решение решать через Jsoup, откуда вы вообще узнали что это такое? и что это можно использовать в этой задаче?
Arseniy Zhuck26 уровень
9 августа, 06:35
Хочу тоже оставить свое мнение, пока самая крутая и сложная задача на JavaRush, в JSOUP не лез из принципа, поясню почему. Хотелось составить свое дерево, как я его вижу, вроде получилось все, после этого пол дня боролся с Валидатором, выяснилось, что в toString просто ставил слэш не в ту сторону))) Получилось дерево, класс myTag и своя версия итератора MyTree для него, знаю, что собирать в строке неправильно, правильно в StringBuilder, но пока так, хотел дерево самостоятельно правильно собрать. Кому будет интересно, ссылка на гит https://github.com/Arseniy-Zhuck/Java_my_edu/tree/master/JavaRush/level20/exp1
Артем37 уровень, Москва
11 августа, 10:08
самая сложная задача по отзывам людей, это ресторан)
Артем37 уровень, Москва
11 августа, 10:13
кстати чтобы разделители правильные выставлять в зависимости от системы есть готовое решение
File.separator
Arseniy Zhuck26 уровень
11 августа, 10:50
Спасибо, а то дома mint, на работе винда, тяжеловато переключатся))
Учиха Шисуи20 уровень, Новосибирск
12 августа, 01:19
как по мне, самое зверство это чертовы CrUDы))
Shyngys23 уровень, Алматы
6 августа, 12:59
Наконец - то решил! Решил с первой попытки, но потратил 5 часов и местами подсматривал))) Использовал stack. Пока решал, узнал почти все о веб-программировании :)
Георгий20 уровень, Москва
4 августа, 08:07
Около 6,5 часов на задачу. JSOUP принципиально не использовал, регулярки тоже. Говнокод свой показывать не буду пожалуй)
Геннадий22 уровень, Иркутск
4 августа, 13:34
Помоги мне))) https://javarush.ru/help/54952
Артем37 уровень, Москва
4 августа, 14:01
тот момент, когда ты мог потратить 6 часов на изучение материала и другие задачи, ты тратил это время на "принцип", неиспользование jsoup. Если очень постараться можно и колбасой забить гвоздь, но зачем? если для этого у тебя под рукой лежит молоток
Георгий20 уровень, Москва
5 августа, 14:38
до jsoup руки еще дойдут, после 1,5 месячного перерыва в обучении было важно решить тем что знаю/помню. К тому же, после того как не решил с нахрапом, был уже спортивный интерес, не мог позволить себе сдаться и взять готовое решение.
Итай39 уровень, Новосибирск
11 августа, 09:46
"Если очень постараться можно и колбасой забить гвоздь, но зачем? если для этого у тебя под рукой лежит молоток" Вот только JR это за метод обучения взяли... забивать гвозди колбасой. У них не мало примеров, где сперва через задницу ученики должны сделать то, что делается "одной строкой", если использовать нормальные инструменты. Ещё, чем дальше, тем больше в курсе JR мозгодробящих заданий отнимающие тонны времени с очень сомнительной пользой. Я уже молчу про клиническое отставание теории от заданий.
Артем37 уровень, Москва
11 августа, 10:08
очень мало случаев когда заставляют людей решать примитивными методами. можно хоть с 1го уровня через стримы и лямбды решать, за редким исключением