Работа с HTML.
Regexp.CDATA;
Regexp.SELF_CLOSING_TAG;
Regexp.OPEN_TAG;
Regexp.CLOSE_TAG;
Regexp.COMMENT;
Regexp.DOCTYPE;
Regexp.ENTITY_NAME;
Regexp.ENTITY_UNICODE;
Regexp.ENTITY_NUMERIC;
String text = "<!-- Комментарий -->";
Html html = new Html(text);
html.isComment();
Результат выполнения:
true
String text = "≈";
Html html = new Html(text);
html.isEntity();
Результат выполнения:
true
String text = "≈";
Html html = new Html(text);
html.isEntityName();
Результат выполнения:
true
String text = "&38;";
Html html = new Html(text);
html.isEntityNumeric();
Результат выполнения:
true
String text = "⋈";
Html html = new Html(text);
html.isEntityUnicode();
Результат выполнения:
true
String text = "<!DOCTYPE html>";
Html html = new Html(text);
html.isDoctype();
Результат выполнения:
true
String text = "<b class='xa-xa'>";
Html html = new Html(text);
html.isTag();
Результат выполнения:
true
String text = "<input type='checkbox'>";
Html html = new Html(text);
html.isOpenTag();
Результат выполнения:
true
String text = "<input type='checkbox' />";
Html html = new Html(text);
html.isSelfClosingTag();
Результат выполнения:
true
String text = "</form>";
Html html = new Html(text);
html.isCloseTag();
Результат выполнения:
true
String text = "<![CDATA[CDATA область]]>";
Html html = new Html(text);
html.isCData();
Результат выполнения:
true
String text = """
Песня без слов, ночь без сна
<!--Всё в свое время, зима и весна-->
Каждой звезде свой неба кусок
Каждому морю дождя глоток
Каждому <!-- яблоку место упасть
Каждому вору возможность украсть
Каждой собаке палку и кость-->
И каждому волку зубы и злость
""";
Html html = new Html(text);
html.findComments();
Результат выполнения:
[
"<!--Всё в свое время, зима и весна-->",
"<!-- яблоку место упасть\nКаждому вору возможность украсть\nКаждой собаке палку и кость-->"
]
String text = """
<![CDATA[Здесь не понятно, где лицо, а где рыло,]]>
И не понятно, где пряник, где плеть.
<![CDATA[Здесь в сено не втыкаются вилы,
А рыба проходит сквозь сеть.
И не ясно, где море, где суша,
Где золото, а где медь.]]>
Что построить, и что разрушить,
И кому, и зачем здесь петь?
""";
Html html = new Html(text);
html.findCData();
Результат выполнения:
[
"<![CDATA[Здесь не понятно, где лицо, а где рыло,]]>",
"<![CDATA[Здесь в сено не втыкаются вилы,\nА рыба проходит сквозь сеть.\nИ не ясно, где море, где суша,\nГде золото, а где медь.]]>"
]
String text = """
Как много веселых ребят,
И все делают ¼ велосипед,
А один из них как-нибудь утром придумает порох.
Ну а я здесь сижу ,без тебя,&
Мне до этих ребят дела нет,
Лишь окурки лежат на полу, да мусора ворох.©
""";
Html html = new Html(text);
html.findEntities();
Результат выполнения:
[
"¼",
"&",
",",
"©"
]
String text = """
Как много веселых ребят,
И все делают ¼ велосипед,
А один из них как-нибудь утром придумает порох.
Ну а я здесь сижу без тебя,&
Мне до этих ребят дела нет,
Лишь окурки лежат на полу, да мусора ворох.
""";
Html html = new Html(text);
html.findEntitiesName();
Результат выполнения:
[
"¼",
"&"
]
String text = """
В моем доме не видно стены,
В моем небе ,не видно луны.
Я слеп, но я вижу тебя,
Я глух, но я слышу тебя.
Я не сплю, © но я вижу сны,
Здесь нет моей вины,
Я нем, но ты слышишь меня,
И этим мы сильны.
""";
Html html = new Html(text);
html.findEntitiesNumeric();
Результат выполнения:
[
",",
"©"
]
String text = """
Ночь, день -
Спать ⋈лень.
Есть дым -≎
Чёрт с ним.
Сна нет -
Есть сон лет.
Кино -
Кончилось давно.
""";
Html html = new Html(text);
html.findEntitiesUnicode();
Результат выполнения:
[
"⋈",
"≎"
]
String text = """
<!DOCTYPE html>Они говорят: им нельзя рисковать,
Потому что у них есть дом,
В доме горит свет.
И я не знаю точно, <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'> кто из нас прав,
Меня ждет на улице дождь,
Их ждет дома обед.
""";
Html html = new Html(text);
html.findDoctype();
Результат выполнения:
[
"<!DOCTYPE html>",
"<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'\n'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>"
]
String text = """
Солдат шел по улице домой
И <b>увидел этих ребят.</b >
"Кто ваша мама, ребята?" -
<meta charset='UTF-8'>Спросил у ребят солдат.
""";
Html html = new Html(text);
html.findTags();
Результат выполнения:
[
"<b>",
"</b >",
"<meta charset='UTF-8'>"
]
String text = """
Солдат шел по улице домой
И <b>увидел этих ребят.
"Кто ваша мама, ребята?" -
<meta charset='UTF-8'>Спросил у ребят солдат.
""";
Html html = new Html(text);
html.findOpenTags();
Результат выполнения:
[
"<b>",
"<meta charset='UTF-8'>"
]
String text = """
О-o, это странное место Камчатка,
О-o, это сладкое</form> слово "Камчатка".
Но на этой земле я не вижу тебя,
Я не вижу твоих кораблей,
Я не вижу реки, я не вижу моста,
Ну и пусть...</b >
""";
Html html = new Html(text);
html.findCloseTags();
Результат выполнения:
[
"</form>",
"</b >"
]
*/
String text = """
У меня есть дом, только нет ключей,
У меня есть солнце, но оно среди туч,<br/>
Есть голова<meta charset='UTF-8'/>, только нет плечей,
Но я вижу, как тучи режут солнечный луч.
У меня есть слово, но в нем нет букв,
У меня есть лес, но нет топоров,
У меня есть время, но нет сил ждать,
И есть еще ночь, но в ней нет снов.
""";
Html html = new Html(text);
html.findSelfClosingTags();
Результат выполнения:
[
"<br/>",
"<meta charset='UTF-8'/>"
]
String text = """
<html><!-- Комментарий --></html>
<!--
Комментарий
с переносом
-->
""";
Html html = new Html(text);
html.deleteComments();
Результат выполнения:
<html></html>
String text = """
<html>
<![CDATA[x<y]]>Текст<![CDATA[
cdata ->
text
]]>
</html>
""";
Html html = new Html(text);
html.deleteCData();
Результат выполнения:
<html>
Текст
</html>
String text = """
<!DOCTYPE html>
<b><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></b>
""";
Html html = new Html(text);
html.deleteDoctype();
Результат выполнения:
<b></b>
String text = """
text <a href="/link" target='_blank'>ссылка</a> Текст
""";
Html html = new Html(text);
html.deleteTag(Tag.A);
Результат выполнения:
text ссылка Текст
String text = """
text <a href="/link" target='_blank'>ссылка</a> Текст
""";
Html html = new Html(text);
html.deleteTag(Tag.A, TagType.OPEN);
Результат выполнения:
text ссылка</a> Текст
String text = """
<b>text</b> <a href="/link" target='_blank'>ссылка</a> Текст <br/>
""";
Html html = new Html(text);
html.deleteTags();
Результат выполнения:
text ссылка Текст
String text = """
<b>text</b> <a href="/link" target='_blank'>ссылка</a> Текст <br/>
""";
Html html = new Html(text);
html.deleteTags(TagType.OPEN);
Результат выполнения:
text</b> ссылка</a> Текст <br/>
String text = """
<b>text</b> <a href="/link" target='_blank'>ссылка</a> Текст <br/>
""";
Html html = new Html(text);
html.deleteTags(Set.of(Tag.BR));
Результат выполнения:
text ссылка Текст <br/>
String text = """
<b>text</b> <a href="/link" target='_blank'>ссылка</a> Текст <br/>
""";
Html html = new Html(text);
html.deleteTags(TagType.OPEN, Set.of(Tag.B));
Результат выполнения:
<b>text</b> ссылка</a> Текст <br/>
String text = """
AC/DC
<<<переменный ток/постоянный ток>>>
""";
Html html = new Html(text);
html.deleteEntity(Entity.LT);
Результат выполнения:
AC/DC
переменный ток/постоянный ток>>>
String text = """
AC/DC
<<<переменный ток/постоянный ток>>>
""";
Html html = new Html(text);
html.deleteEntity(Entity.LT, EntityType.NUMERIC);
Результат выполнения:
AC/DC
<<переменный ток/постоянный ток>>>
String text = """
AC/DC
<<<переменный ток/постоянный ток>>>
""";
Html html = new Html(text);
html.deleteEntities();
Результат выполнения:
ACDC
переменный токпостоянный ток
String text = """
AC/DC
<<<переменный ток/постоянный ток>>>
""";
Html html = new Html(text);
html.deleteEntities(Set.of(Entity.LT, Entity.GT));
Результат выполнения:
ACDC
<<<переменный токпостоянный ток>>>
String text = """
AC/DC
<<<переменный ток/постоянный ток>>>;
""";
Html html = new Html(text);
html.encodeEntity(Entity.LT, EntityType.NAME);
Результат выполнения:
AC/DC
<<<переменный ток/постоянный ток>>>
String text = """
AC/DC
<<<переменный ток/постоянный ток>>>;
""";
Html html = new Html(text);
html.encodeEntities(EntityType.NAME);
Результат выполнения:
AC/DC
<<<переменный ток/постоянный ток>>>
Преобразование всех специальных символов в соответствующие HTML-сущности с указанием типа и исключений
String text = """
AC/DC
<<<переменный ток/постоянный ток>>>;
""";
Html html = new Html(text);
html.encodeEntities(EntityType.NAME, Set.of(Entity.GT));
Результат выполнения:
AC/DC
<<<переменный ток/постоянный ток>>>
String text = """
AC/DC
<<<переменный ток/постоянный ток>>>
""";
Html html = new Html(text);
html.decodeEntity(Entity.GT);
Результат выполнения:
AC/DC
<<<переменный ток/постоянный ток>>>
String text = """
AC/DC
<<<переменный ток/постоянный ток>>>
""";
Html html = new Html(text);
html.decodeEntity(Entity.GT, EntityType.NAME);
Результат выполнения:
AC/DC
<<<переменный ток/постоянный ток>>>
String text = """
AC/DC
<<<переменный ток/постоянный ток>>>
""";
Html html = new Html(text);
html.decodeEntities();
Результат выполнения:
AC/DC
<<<переменный ток/постоянный ток>>>
String text = """
AC/DC
<<<переменный ток/постоянный ток>>>
""";
Html html = new Html(text);
html.decodeEntities(EntityType.NAME);
Результат выполнения:
AC/DC
<<<переменный ток/постоянный ток>>>
String text = """
AC/DC
<<<переменный ток/постоянный ток>>>
""";
Html html = new Html(text);
html.decodeEntities(Set.of(Entity.LT, Entity.GT));
Результат выполнения:
AC/DC
<<<переменный ток/постоянный ток>>>
Преобразование всех HTML-сущностей в соответствующие специальные символы с указанием типа и исключений
String text = """
AC/DC
<<<переменный ток/постоянный ток>>>
""";
Html html = new Html(text);
html.decodeEntities(EntityType.NAME, Set.of(Entity.LT));
Результат выполнения:
AC/DC
<<<переменный ток/постоянный ток>>>