как подстроку строки при поиске определенного имени?

1

В моем коде мне нужно напечатать имя пакета и имя класса, где бы линия не находила "пакет" и "класс". Я знаю, как подстроить/раскол, если индекс известен. Как и в моем случае, имя пакета и имя класса будут меняться в разных файлах, поэтому немного запутались, как это сделать. Например:

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
split
substring

1 ответ

1
Лучший ответ

Используйте метод 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 + " ");
}
  • 0
    Большое спасибо gilbert.can, пожалуйста, объясните номера строк 5 и 8.
  • 0
    этот код работает, но если в худшем случае кто-то добавит еще одну строку после ";" как я буду подстроковать эту часть. Например, пакет com.sify; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; импорт java.io.IOException; открытый класс WriteJava {} открытый класс WriteJava2 {} в этом случае выход будет выглядеть как; Имя пакета: com.sify; импорт java.io.BufferedReader; что я не хочу. мне нужно только имя пакета, оно должно заканчиваться на ';'. Просьба уточнить меня.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню