Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860

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

23.01.2021, 17:56. Показов 2978. Ответов 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,860
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,860
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,860
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
Ответ Создать тему
Новые блоги и статьи
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool Worker Pool — паттерн конкурентной обработки задач в Go. Суть: фиксированное количество горутин-воркеров читают задачи из общего канала и пишут результаты в общий канал результатов. . . .
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru