В моем коде мне нужно напечатать имя пакета и имя класса, где бы линия не находила "пакет" и "класс". Я знаю, как подстроить/раскол, если индекс известен. Как и в моем случае, имя пакета и имя класса будут меняться в разных файлах, поэтому немного запутались, как это сделать. Например:
package com.sify;import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class WriteJava{
}
public class WriteJava2{
}
Выход должен быть;
Имя пакета: com.sify Имя класса: WriteJava Имя класса: WriteJava2
Любая помощь заметна.
Немного отредактировал мой код. что, если какая-то другая строка будет после "package com.sify"; как указано в коде. Как подстроить дополнительную часть импорта.
Используйте метод String.indexOf(String), чтобы найти первую позицию строк "package" и "class" в строке. Затем возьмите подстроку с конца этой позиции до первой точки с запятой. Что-то вроде этого:
String line;
while ((line = readLine()) != null) {
String packageName = null, className = null;
int indexOfPackage = line.indexOf("package");
int indexOfClass = line.indexOf("class");
int indexOfBrace = line.indexOf('{');
int indexOfSemiColon = line.indexOf(';');
int classStringLength = "class ".length();
int packageStringLength = "package ".length();
if (indexOfPackage != -1) {
packageName = line.substring(indexOfPackage + packageStringLength, indexOfSemiColon);
}
if (indexOfClass != -1) {
className = line.substring(indexOfClass + classStringLength, indexOfBrace);
}
System.out.println("Package Name: " + packageName + " ");
System.out.print("Class Name: " + className + " ");
}