Добрый вечер!
В регулярные выражения сознательно не лезу. Они мне тяжело идут, по-этому решала по-старинке. Мне кажется, что программа работает верно, но валидатор не согласен. Код вроде простой, будет обидно, если там в какой-то глупости ошибка. Но еще обиднее будет, если логика в корне не верная(
Заранее спасибо за советы😊
package com.javarush.task.task19.task1918;
/*
Знакомство с тегами
*/
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class Solution {
public static void main(String[] args) throws IOException {
String tag = args[0];//"a";//
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
////"C:/ЛАДА/102.txt"
BufferedReader file = new BufferedReader(new FileReader(reader.readLine()));
reader.close();
String sum = "";
while (file.ready()) {
String line = file.readLine();
sum = sum + line;
}
String finish = "";
String[] list = sum.split("</" + tag + ">");
List<String> list2 = new ArrayList<>();
for (int i=0; i<list.length; i++) {
list[i] = list[i] + "</" + tag + ">";
if (list[i].contains("<" + tag) && list[i].contains("</" + tag + ">")) {
int index = list[i].indexOf("<" + tag);
int indexEnd = list[i].indexOf("</" + tag);
finish = list[i].substring(index, indexEnd) + "</" + tag + ">";
list2.add(finish);
}
else list2.add(list[i]);
}
for (int i=0; i<list2.size(); i++) {
if (!list2.get(i).contains("<" + tag)) {
String s = list2.get(i-1) + list2.get(i);
list2.remove(i);
list2.remove(i-1);
list2.add(i-1,s);
}
}
for (String s : list2){
System.out.println(s); }
file.close();
}
}