Как обрезать текст от слова до слова Java

У меня есть страница, на которой выводится лог, но сделана она, разделением экрана на две части(не всплывающее окно)

Там есть нужные мне данные внутри тега

<MessageText>9088</MessageText>\n

К сожалению, части логов не выделяются в отдельные блоки, а идут сплошным текстом

Я использовал getPageSource() но не знаю как убрать из текста все ненужное
У меня получилось как-то так

String str = driver.getPageSource();
        System.out.println(str.substring(45975,45990));

Судя по индексу, можно понять, что текст очень большой, но проблема в том, что лог получается каждый раз разный по длине тк туда пишутся имена клиентов и сотрудников, которые соответственно разные по длине. И если под одной заявкой у меня получилось получить нужные мне цифры внутри MessageText, то для других этот способ не работает.

И вот хотелось бы узнать, как обрезать текст от слова до слова. Обрезать все начало до &lt;MessageText&gt; и после &lt;/MessageText&gt;\n , а желательно вообще включительно теги

String start = "<MessageText>";
String end = start.replace("<", "</");
str = str.substring(str.indexOf(start) + start.length(), 
        str.indexOf(end, str.indexOf(start) + start.length()));
1 лайк

java.lang.StringIndexOutOfBoundsException: begin 12, end -1, length 113601

String start = "&lt;MessageText&gt;";
String end = start.replace("&lt;", "&lt;/");

Все так же(

Ну, руки я вам вряд-ли помогу выпрямить…

1 лайк
 String str = driver.getPageSource();

        String start = "&lt;MessageText&gt;";
        String end = start.replace("&lt;", "&lt;/");
        str = str.substring(str.indexOf(start) + start.length(), 
                str.indexOf(end, str.indexOf(start) + start.length()));
//        System.out.print(str);
java.lang.StringIndexOutOfBoundsException: begin 18, end -1, length 748005

Ну давайте уж и весь str.

Он падает на str = str.substring(str.indexOf(start) + start.length(), str.indexOf(end, str.indexOf(start) + start.length()))

а вы дебажить не умеете?

Научите)

почему я должен вас учить пользоваться средой разработки? погуглите, посмотрите курсы и статьи в интернете

я не верю, что у вас даже разработчика нету, который сможет подсказать как делать супер банальные вещи

Дело в том что функция о которой писал [BabyRoot] - не работает в моем случае.

Допустим:

String str = "123456789";
        String start = "1";
        String end = start.replace("1","9");
str = str.substring(str.indexOf(start) + start.length(),
                str.indexOf(end, str.indexOf(start) + start.length()));
        System.out.print(str);

ответ будет 2345678 . Мне это и нужно. Я и до того как создать пост, пробовал этот вариант. Но он не работает конкретно в моей ситуации с использованием driver.getPageSource();

Если бы я хотел просто узнать как в ява вытащить текст между двумя словами, я бы так и написал, не описывая всю ситуацию целиком

а вы думаете, что тут вам сразу готовую функцию дадут?

Не претендую) Мне скинули вариант, я сказал что он не подходит. Если кто-то предложит еще решения, буду очень рад

А если больше никто не предложит?

Если быстродействие неважно, то можно использовать простейшее регулярное выражение:

<MessageText>(.*)<\/MessageText>

И вытаскивать все матчи, а в них уже группу.
Искать соответственно все вхождения и в многострочном режиме.

1 лайк

Воу-воу-воу, полехше!
ну и уж тогда надо писать как регулярки использовать ))

Решение

1 лайк

Спасибо!

String resultStr = str.substring(str.indexOf("lt;MessageText&gt;") + 1, str.indexOf("&lt;/MessageText&gt;"));

Работает