Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,861

Замена формата ссылок находящихся в html документе с http://test. на <a href='http://test.'>test.</a>

23.01.2021, 17:56. Показов 3037. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите написать код для следующей задачи:

На вход программы подается произвольный html-файл (запрашивается путь к html файлу), необходимо все ссылки http:// не находящиеся в теге <a> обернуть тегом <a> в качестве описания использовать имя домена до первого символа «/». Например, есть ссылка http://test.bstu.ru/bstu/students
Необходимо заменить на <a href='http://test.bstu.ru/bstu/students'>test.bstu.ru</a>


Java
1
2
3
    public void start() {
...???
        }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.01.2021, 17:56
Ответы с готовыми решениями:

Nginx перенаправляет на http://site.ru/test.ru или http://test.ru/test.ru
Только, что поставил nginx + php-fpm по этой статье - http://dunmaksim.blogspot.ru/2013/12/nginx-php-fpm.html При попытке зайти на сайт...

Переименовать ссылку с такой http://test-site.ru/manage на http://test-site.ru/script.php?params=manage
помогите переименовать ссылку с такой http://test-site.ru/manage на http://test-site.ru/script.php?params=manage ...

Сколько памяти (в байтах) займет данный массив: class Test { public: int c=0,r=0; double q = 0; }; Test *Mass = new Test
Сколько памяти (в байтах) займет данный массив: class Test { public: int c=0, r=0; double q = 0; }; Test *Mass = new...

23
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,861
24.01.2021, 23:11  [ТС]
Студворк — интернет-сервис помощи студентам
iSmokeJC, да, спасибо, запускается, но не выполняет то что ей нужно...

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
30
31
32
33
34
35
36
37
38
package ru.bstu.LR4.lusenkov.LR4;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Stream;
 
public class LR4 {
        public void getLinkifiedMyText() throws FileNotFoundException {
                System.out.println("Введите путь к html файлу:");
                Scanner path = new Scanner(System.in);
                String stringPath = path.nextLine();
 
                try (FileWriter writer = new FileWriter(stringPath + "_2.html");
                     Stream<String> lines = Files.lines(Paths.get(stringPath))) {
                        Pattern p = Pattern.compile("(?i)\\b((?:https?://|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'\".,<>???“”‘’]))");
                        Matcher matcher = p.matcher("");
                        lines.forEach(x -> {
                                matcher.reset(x);
                                try {
                                        if (matcher.group(1).startsWith("http://")) {
                                                writer.write(matcher.replaceAll("<a href=\"$1\">$1</a>"));
                                        } else {
                                                writer.write(matcher.replaceAll("<a href=\"http://$1\">$1</a>"));
                                        }
                                } catch (Exception e) {
                                        e.printStackTrace();
                                }
                        });
                } catch (IOException e) {
                        e.printStackTrace();
                }
        }
}
Создается файл "..._2.html" - НО ПУСТОЙ!!!
Миниатюры
Замена формата ссылок находящихся в html документе с http://test. на <a href='http://test.'>test.</a>  
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,861
24.01.2021, 23:12  [ТС]
iSmokeJC, что-то ему не нравится в 26 строке...или я не правильно сконструировал...

Java
1
writer.write(matcher.replaceAll("<a href=\"$1\">$1</a>"));
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
24.01.2021, 23:19
Цитата Сообщение от xamelione25 Посмотреть сообщение
НО ПУСТОЙ!!!
Ессно. До его заполнения дело не дошло
Тебе трейс пишет - No match found. Проверяй регулярки.
И добавь перед reset() вывод x в консоль - посмотри что с файла приходит
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,861
25.01.2021, 13:43  [ТС]
iSmokeJC,

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
30
31
32
33
34
35
36
37
38
package ru.bstu.LR4.lusenkov.LR4;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Stream;
 
public class LR4 {
        public void getLinkifiedMyText() throws FileNotFoundException {
                System.out.println("Введите путь к html файлу:");
                Scanner path = new Scanner(System.in);
                String stringPath = path.nextLine();
                try (FileWriter writer = new FileWriter(stringPath + "_2.html");
                     Stream<String> lines = Files.lines(Paths.get(stringPath))) {
                        Pattern p = Pattern.compile("^(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w\\.-]*)*\\/?$");
                        Matcher matcher = p.matcher("");
                        lines.forEach(x -> {
                                System.out.println(x);
                                matcher.reset(x);
                                try {
                                        if (matcher.group(1).startsWith("https://")) {
                                                writer.write(matcher.replaceAll("<a href=\"$1\">$1</a>"));
                                        } else {
                                                writer.write(matcher.replaceAll("<a href=\"http://$1\">$1</a>"));
                                        }
                                } catch (Exception e) {
                                        e.printStackTrace();
                                }
                        });
                } catch (IOException e) {
                        e.printStackTrace();
                }
        }
}
вопрос проблемы стал понятен - связана с экранированием ссылок двойными слэшами
в чем конкретно ошибка в этих ссылках - в упор не вижу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.01.2021, 13:43

Как перенаправить с test.ru на test.test.ru (на одном компьютере)
Как сделать так чтобы на комп1 при вводе например: google.ru попадал на другой сайт(в данном случае сайт с доменом 3 его уровня:...

Url имеет форму http://local.test/?q=services
Я установил себе апаче, и только через неделю заметил эту проблему. Все мои ссылки генерируются в таком виде: ...

C:\Projects\test\test.cpp|6|error: ISO C++ forbids declaration of 'operator++' with no type [-fpermissive]|
class TUID { public: char Data; TUID (); operator ++ (); };

Как сделать чтобы URL выглядел так: http://test/
В Apache у меня URL сайта отображается так: http://localhost/test/www/ как сделать чтобы было: http://test/ ?

Функция file_exists(test/01.ogg) работает, если папка test находится в корневом каталоге моего сервера.
Столкнулся с интересной проблеммой. Функция file_exists(test/01.ogg) работает, если папка test находится в корневом каталоге моего...


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

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

Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru