считать номер строки файла при передаче данных файла в строковый токенизатор в Java - PullRequest
0 голосов
/ 10 декабря 2011

Если я хочу скопировать содержимое текстового файла, используя токенайзер строк, скажем так:

StringTokenizer strk = new StringTokenizer(new String(buffer), Constant.DELIMS,true);

И затем я хочу просмотреть строковый токенайзер, но также сохранить счет в переменной того, сколько строк я передал из исходного файла: (под этим я подразумеваю подсчет количества токенов, которые представляют символ новой строки)

nr_lines=0;
endline="\n";
while (strk.hasMoreTokens()) {
       String word = strk.nextToken(); 
       if (word.equals(endline)) nr_lines++;  
} 

Но, похоже, это не работает правильно. Я делаю сравнение с неправильным разделителем (\ n). Я также пытался с \ r. Но он возвращает большее число, чем следовало бы, например, nr_lines будет увеличиваться, когда не должно. Не могли бы вы помочь мне. Также, если у вас есть другая идея о том, как я мог бы отслеживать номер строки после передачи содержимого файла в строковый токенизатор, это было бы очень кстати. Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 10 декабря 2011

Если вы находитесь на компьютере с Windows, символ новой строки выражается в текстовых файлах как возврат каретки "\ r", за которым следует перевод строки "\ n", так что newLine = "\ r \ n", и так как вы используя конструктор StringTokenizer, который принимает разделитель и логическую переменную, убедитесь, что ваш символ разделителя.

0 голосов
/ 10 декабря 2011

Я бы рекомендовал вместо этого использовать Scanner.Хотя он не так полезен для возврата Object s, у него есть метод nextLine, который можно затем проанализировать с помощью StringTokenizer.

Например:

New Scanner
New StringTokenizer

Get next line from Scanner
  Count the line
  Re-initialize StringTokenizer with the newly read line from Scanner
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...