Чтение строки под строкой из файла

Например, я должен был сохранить контактную информацию в файле.txt, и после его сохранения я хотел бы просмотреть контактную информацию о человеке, только введя имя.

Например, если бы у меня был файл.txt, содержащий эти строки,

Имя: Широэ
Контактный номер: 1234567890
Имя: Кирито
Контактный номер: 0987654321

и я ввел "Shiroe" в качестве имени контакта для просмотра. Мой ожидаемый результат будет,

Имя: Широэ
Контактный номер: 1234567890

Итак, суть в том, можно ли прочитать строку ниже строки (сначала прочитайте "Широ"/"Имя: Широ", а затем прочитайте строку ниже / после "Широ") и использовать в качестве вывода? Или я задаю не тот вопрос?

2 ответа

Решение

Вы могли бы сделать что-то вроде этого... Трудно издеваться над правильным фрагментом без показа вашего кода, но логика должна применяться...

try(BufferedReader br = new BufferedReader(new FileReader("yourFile.txt"))) {
        StringBuilder builder = new StringBuilder();
        String line = br.readLine();
        Boolean needNextLine = false;

        while (line != null) {
            if (needNextLine) {
                sb.append(line)
                needNextLine = false;
                sb.append(System.lineSeparator());
            }

            if (line.contains("Shiroe")) {     // hardcoded
                 sb.append(line);
                 needNextLine = true;
                 sb.append(System.lineSeparator());
            }

            line = br.readLine();
        }
        String toBeReturned = sb.toString();
    }

Вполне возможно


  • поиск по всей строке (sat "text", содержащий данные из текстового файла) для поиска "Name:Shiroe" с использованием int startPos = text.indexOf("Name:Shiroe")
  • Это вернуло бы вам индекс первого вхождения символа ('N') в это "Имя: Широ".
  • Теперь найдите другое вхождение "Name" после "Name:Shiroe" с помощью endPos = text.indexOf("Name",pos+1)
  • Теперь извлеките форму подстроки startPos до endPos, используя text.subString (startPos, endPos);

int startPos = text.indexOf("Name:Shiroe");
int endPos = text.indexOf("Name",startPos);
String details = text.subString(startPos,endPos);

ура:)

Другие вопросы по тегам