Манипулирование строками из файла - PullRequest
0 голосов
/ 06 июля 2011

У меня есть файл с синтаксисом, который выглядит следующим образом:

! <Group>, Column1, column2, column3 
Group, 10, 20, 30
Group, 11, 12, 13
...
! <AnotherGroup>, Column1, column2, column3, column4
AnotherGroup, 10, 20, 30, A
AnotherGroup, 11, 12, 13, B
...

Когда я пытаюсь манипулировать строками с помощью объекта Scanner, происходят некоторые странные вещи, такие как:

  • конец файла найден
  • иногда не распознает символ "!" (см. фрагмент кода)
  • иногда не распознает пробелы

        sc = new Scanner(new File("files/myFile"));
    while (sc.hasNextLine()) {
        String tempLine = sc.nextLine();
        if (tempLine.contains("!")) {
            System.out.println(tempLine);
    

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

Есть какие-нибудь советы?

Отредактировано после первого ответа: Это тот случай, когда иногда не распознается символ "!" (см. фрагмент кода)

Мой Sysout:

! <Group1>, Column1, column2, column3 
! <Group2>, Column1, column2, column3 
! <Group5>, Column1, column2, column3

Не читал строки с группами 3 и 4

Ответы [ 2 ]

0 голосов
/ 06 июля 2011

Я думаю, вы неправильно понимаете, как работает сканер.nextLine () заставляет сканер пропустить оставшуюся часть текущей строки, на которую он смотрит, и возвращает строку, содержащую пропущенный текст.Он покидает сканер в начале следующей строки.

Вы не объяснили контекст, когда происходят ваши странные вещи.Когда вы говорите, что «конец файла найден» - это одна из ваших странных вещей, которые происходят, я предполагаю, что это происходит ближе к концу, когда вы ожидаете обработки еще одной строки.Если сканер просматривает начало последней строки в файле, что будет возвращать hasNextLine ()?Ваш цикл while будет завершен без обработки некоторого содержимого вашего файла.Если это не то поведение, которое вы испытываете, вам нужно объяснить лучше.

Если вы хотите использовать сканер, попробуйте проверить что-то вроде this .

0 голосов
/ 06 июля 2011

Я не думаю, что есть проблема со сканером. По крайней мере, часть кода, которую вы предоставили, должна работать нормально. Может быть, убедитесь, что вы делаете какую-то глупую ошибку, или подождите, пока некоторые гуру не придут к вам на помощь; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...