Вот обновленный код. Для тех, кто следует вдоль вопроса, правка содержит оригинальный вопрос.
if (0 != searchString.length()) {
for (int index = input.indexOf(searchString, 0);
index != -1;
index = input.indexOf(searchString, eagerMatching ? index + 1 : index + searchString.length())) {
occurences++;
System.out.println(occurences);
indexIN=input.indexOf(ListStringIN, occurences - 1) + ListStringIN.length();
System.out.println(indexIN);
System.out.println(ListStringIN.length());
indexOUT=input.indexOf(ListStringOUT, occurences - 1);
System.out.println(indexOUT);
Lresult.add(input.substring(indexIN, indexOUT));
System.out.println();
}
}
Как видите, я выдал номера индексов.
Мой код хорошо работает только с одним элементом
Но когда я пишу что-то вроде этого: %%%%ONE++++ %%%%TWO++++
Это исключение:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: begin 16, end 7, length 23
at java.base/java.lang.String.checkBoundsBeginEnd(String.java:3410)
at java.base/java.lang.String.substring(String.java:1883)
at com.DMMS.Main.identify(Main.java:81)
И я обнаружил, что indexIN изменяется в начале второй строки, но не в indexOUT
Я не мог понять, почему