Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Есть String с html-документом, Как изменить имя сервера в ссылках? 
:(
    Опции темы
Barvetal
Дата 14.4.2006, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 181
Регистрация: 31.10.2005

Репутация: 5
Всего: 5



Всем привет!

Есть String, в котором содержится html-документ. В этом документе есть картинки, пути к которым относительные. Мне нужно во всех этих линках дописать имя сервера.

Например. Есть html-документ:
Код

<html>blablabla<img src="/images/img001.jpg">blablabla<html>


Мне нужно в ссылке на каждую картинку добавить имя сервера. Чтобы было
Код

<html>blablabla<img src="http://www.myserver.com/images/img001.jpg">blablabla<html>


Понятно, что путей для достижения такого результата много...

Но как решить мою задачу оптимальным образом?

Всем заранее спасибо за ответ!
PM MAIL   Вверх
Barvetal
Дата 14.4.2006, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 181
Регистрация: 31.10.2005

Репутация: 5
Всего: 5



Решил сделать при помощи регулярных выражений.

Только проблема в том, что в исходном тексте перенос строки (0D0A) может стоять любом месте. Поэтому нужно подменять теги img src с учетом того, что они могут быть разорваны переводом строки в любом месте. Сделал так:

Код

String content = "<html>blablabla<img src=\"/images/img001.jpg\">blablabla<html>"
content = content.replaceAll("<\\s*img\\s*src\\s*=\\s*\"\\s*/\\s*","<img src=\"http:/www.myserver.com/");


Очень уж не нравиться паттерн регулярного выражения, который получился... Может, есть паттерн или решение поэллегантней?
PM MAIL   Вверх
ALKS
Дата 15.4.2006, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 6
Всего: 11



сделай в два шага. 1. замени перенос строки на пустую строку везде элементарным 2. замени доменное имя на то что тебе надо по более простому регулярному вырожению.

работать будет быстрее вряд-ли, но выглядеть,возможно, будет проще и понятней smile
PM   Вверх
Barvetal
Дата 17.4.2006, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 181
Регистрация: 31.10.2005

Репутация: 5
Всего: 5



>замени перенос строки на пустую строку везде элементарным 

Не все так просто... Дело в том, что переводов строки может быть несколько, так же, как и несколько пробелов. Поэтому делать цикл до тех пор, пока не будет переносов и дублирующихся пробелов и табуляторов...


> работать будет быстрее вряд-ли, но выглядеть,возможно, 
> будет проще и понятней smile

Эт точно, что быстрей не будет... Но проще и понятней тоже вряд ли, исходя из написанного мной на два абзаца выше... Если бы было только по одному пробелу и по одному переносу строки...

Все равно спасибо за предложение и помощь! 
PM MAIL   Вверх
igon
Дата 18.4.2006, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: нет
Всего: 21



Код

\s  -  whitespace character: [ \t\n\x0B\f\r] 
 
1. Замени последовательность из одного и более whitespace character на единичный пробел
Код

content = content.replaceAll ("\\s+", " ");

2. Как посоветовал ALKS 


--------------------
Хотите поговорить об этом?
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0807 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.