Всем Привет, есть текстовой файл, там хранится какой-то код, как можно сгруппировать например целый цикл for , или же if, while, а затем их записать в коллекцию
например есть такой файл который я прочитал и записал в массив:
0)Class A{
1)if(a>0){
2)a=a+1:
3)System.out.print(a);
4)}
5)if(a<0){
6)for(i=0; i<s.length; i++){
7)words.add(s[i]);
8)}
9)for(i=0; i<s.length; i++){
10)words.add(s[i]);
11)}
12)}
13)for(j=0; j<sap.length; j++){
14)Rep.add(s[i]);
15)System.out.println(s[i]);
16)}
17)for(j=0; j<sap.length; j++){
18)Rep.add(s[i]);
19)System.out.println(s[i]);
20)}
21)}
после перегруппировки он должен стать таким:
0)Class A{
1)if(a>0){
a=a+1:
System.out.print(a);
}
2)if(a<0){
3)for(i=0; i<s.length; i++){
words.add(s[i]);
}
4)for(i=0; i<s.length; i++){
words.add(s[i]);
}
}
5)for(j=0; j<sap.length; j++){
Rep.add(s[i]);
System.out.println(s[i]);
}
6)for(j=0; j<sap.length; j++){
Rep.add(s[i]);
System.out.println(s[i]);
}
}
каким образом это можно реализовать, у меня нет никаких идей, помогите
Изначально необходимо разобраться с логикой. Если я правильно понял, то задача состоит в следующем - свернуть блоки кода в одну ячейку массива.
Делаем за один проход, сложность алгоритма n. Идем по массиву и ищем по вхождению заданных слов, как только нашли нужное слово, начинаем считать скобки ("{", "}") блоков кода и добавлять строки в StringBuffer. Считываем пока не кончатся строки, или пока счетчик не станет равен нулю (открывающая скобка добавляет 1, закрывающая уменьшает на 1).
Если строки кончились раньше - ошибка, некорректный файл. Можно написать свое исключение и отлавливать. Когда счетчик упал в ноль, добавляем в новый массив участок кода одной ячейкой.
Решение в лоб. Проверяем по открывающейся фигурной скобке в конце строки и при наличии записываем в новый элемент листа:
List<String> lines = new ArrayList<>(); // лист со строками вашего файла
List<String> newLines = new ArrayList<>();
StringBuilder newLine = new StringBuilder();
for (String line : lines) {
if (line.endsWith("{")) {
if (newLine.length() > 0) {
newLines.add(newLine.toString());
}
newLine = new StringBuilder(line);
} else {
newLine.append("\n").append(line);
}
}
newLines.add(newLine.toString());
Проверить можно на Ideone.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть отдельный класс CustomKeyboard в нем описан метод onKey c некоторыми клавишамиКогда я создаю объект этого класса во фрагменте, появляется моя...
Есть текст, загруженный из файла "text_inp"Нахожу в нем строку со словом "word" и читаю от конца слова до конца строки:
Нужно сделать разварачиваемый анимированый список я нашел вот этот код