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

  • 20
  • Недоступна
Считайте с консоли имя файла, который имеет HTML-формат. Пример: Info about Leela <span xml:lang="en" lang="en"><b><span>Turanga Leela </span></b></span><span>Super</span><span>girl</span> Первым параметром в метод main приходит тег. Например, "span". Вывести на консоль все теги, которые соответству
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (523)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Anonymous #2489173 23 уровень
19 февраля, 01:50
Лол, хотел с помощью парсера xml какого-нибудь пройтись, а файл в примере вообще какой-то странный. Корневого тега нет, какой-то текст вне тегов валяется.... это не html-файл, а действительно просто файл с рандомным текстом, который почему-то имеет html формат
Anonymous #2489173 23 уровень
19 февраля, 01:51
и потом я прочитал требования, а не только условие. придётся долго сидеть и изобретать велосипед
Skanta Работает в в поиске работы
13 февраля, 15:37
Долго сидел с задачей. Через суп решил, но Валя не принял. Решил переделать. Долго и муторно решил. Глянул на решение и вот тут уже видно, что над задачей видимо долго голову не ломали разрабы. А теперь проверим, что будет, если добавить внутрь ещё одну пару тегов. И.... мы получим только 2 закрывающих спана. Почему? Потому что они решили в коде
while (fileContent.substring(indexInTag, endTagIndex).contains(openTag)) {
                    indexInTag = endTagIndex + tagLength;
                    endTagIndex = fileContent.indexOf(closingTag, indexInTag);
                }
не сдвигать проверку на то количество спанов, которые могут быть между первым открывающим и первым закрывающим, а просто проверить ближайший спан после закрывающего. Молодцы. З.ы.: это не попытка докопаться до разрабов, а указание на то, что программа работает некорректно (и это с кривым валидатором-то). З.з.ы: а всего лишь надо проверять строку со сдвигом
int indexInTag = startTagIndex;
while (fileString.substring(indexInTag + tagLength, endTagIndex).contains(openTag)) {
                    indexInTag = fileString.indexOf(openTag, indexInTag + tagLength)
                    endTagIndex = fileString.indexOf(closingTag, endTagIndex + tagLength);
}
Сергей Novichok QA Automation Engineer
11 февраля, 14:53
Че то с валидатором перекрутили - перестали приниматься рабочие решения (ниже из каментов, из помощи) и с супом, и без него, а они выдают верный результат
Олег Д 22 уровень, Москва
8 февраля, 13:51
Ахахахха а гречи мешок не перебрать? PS Не парьтесь, ставьте Jsoup и наслаждайтесь Часовые потуги рождения никому НЕ нужных велосипедов НИЧЕГО вам не дадут. Хотя, если у вас время бесплатное / бесконечное, то конечно ОК
Сергей Novichok QA Automation Engineer
11 февраля, 13:04
С супом перестало прокатывать 🤢 Придется изобретать велосипед с квадратными колесами
Максим Дудин 20 уровень, Калининград
6 февраля, 21:20
вот вывод: решение учитывает (неважно какое ) кол-во вложений, всё работает (протестил), но..... не проходит валидацию по 5-му пункту. 2,5 дня (8-9 меня/часов)..... бороться дальше не вижу смысла, бо не понимаю, что от меня хотят пошёл смотреть решение от javarush
Реутов Сергей 20 уровень, Москва
6 февраля, 19:10
Никак не могу справиться с валидатором. Я правильно понимаю, что вот этими строчками я описал все возможные соответствующие теги, что бы их потом искать в тексте?
String openTag1="<"+args[0]+">";
String openTag2="<"+args[0]+" ";
String openTag3="<"+args[0]+"\r\n";
Или я что-то упустил?
Александр Яковлев 26 уровень, Магнитогорск
7 февраля, 13:05
Нет, не все. Запросто может быть тег: String openTag4="<"+args[0]+"куча другого текста"+">";
Реутов Сергей 20 уровень, Москва
8 февраля, 18:05
Спасибо, я ждал примерно такого ответа и ушёл читать про регулярки. Описал все возможный открытые теги вот так:
Pattern pattern = Pattern.compile("<"+args[0]+".+?>");
предварительно удалив все переносы строк. Но и это валидатор забраковал. Прога работает отлично с моим алгоритмом, так жалко это терять, но в итоге сдамся и пойду читать про Jsoup.
Реутов Сергей 20 уровень, Москва
8 февраля, 19:35
В общем я почитал Jsoup. Написал код, получил снова хорошее решение с верным выводом. Валик ругается на последний пункт. Я скопировал решение одного из комментаторов с успешным прохождением задачи — валидатор ругается на последний пункт. Видимо всё таки это баг.
DieMyGod 20 уровень, Москва
10 февраля, 19:11
перепробовал больше 5 вариантов различных, и через очереди и через стэк+очередь и через jsop, копировал чужие рабочие решения по заверению их авторов, у которых валидация пройдена с ними - Валя вообще ниче не жрёт(
Михаил 23 уровень, Саратов
2 февраля, 09:47
Задачу так и не решил. На всех представленных примерах вывод точь в точь как у "правильного решения", но пятый пункт так и не прошёл. Задача интересная, но javarush опять лажает. Хотя бы прикладывали реальные тестовые примеры.
endurance2296 23 уровень, Киев
2 февраля, 06:45
Самая потная задача за последние несколько уровней) Сначала пытался решать через regex, пример в условии отрабатывало правильно, а вот многоуровневое вложение тегов я не учел.. понял что html/xml через regex парсить довольно плохая идея. В общем, лучше изучите новую библиотеку (это я про jsoup) и идите дальше!
Denis 20 уровень, Москва
26 января, 20:26
Задача просто бомба, долго корпел без jsop, только с тем что имеем на данный момент, без регулярок. учитывается последовательная глубина вложенности, честно параллельную не проверял. P/s тем кто уже сдал!! кому любопытно взглянуть https://github.com/GreenKorgik/javaRush/tree/task1918/src/task
jimaltair 27 уровень, Калининград
27 января, 09:55
После просмотра кода так и хочется сказать: "Безумец, остановись!")) Но в тоже время подобное упорство внушает уважение. Признаюсь, я как прочитал волшебное слово JSoup, сразу ушёл изучать эту библиотеку и не стал городить свои велосипеды
Дмитрий 23 уровень
23 января, 20:11
3 часа и 2 сигареты. Без рекурсии, стеков, и регулярок. Логика: Все сгоняем в одну строку (while) Считаем количество пар тегов ( потом используем в цикле for) - в нашем случае 4. В цикле в подстроке от начального тега до конечного - - если находим еще один начальный - ищем следующий конечный, меняем подстроку (увеличиваем до следующего конечного), из этой же подстроки делаем еще одну (с начальным и конечным тегом), из строки со всем текстом отрезаем все до последнего конечного тега, пробрасываем счетчик +1; - если не находим - выделяем подстроку с начальным и конечным тегом, из строки со всем текстом отрезаем все до последнего конечного тега. Минусы - глубина вложения - 1 тег, но в условиях больше не надо. Чувствую себя мясником.