Чтение строки из текстового файла Java

Я пытаюсь прочитать строку из файла, используя BufferedReader и Scanner. Я могу создать оба из них без проблем. Что я хочу сделать, так это прочитать одну строку, подсчитать количество запятых в этой строке, а затем вернуться и взять каждый отдельный элемент. Итак, если файл выглядел так:

пункт1, пункт2, пункт3 и т. д.

пункт4, пункт5, пункт6 и т. д.

Программа вернет, что запятых четыре, а затем вернется и получит по одному элементу за раз. Это будет повторяться для следующей строки. Возврат количества запятых имеет решающее значение для моей программы, иначе я бы просто использовал метод Scanner.useDelimiter(). Я также не знаю, как вернуться к началу строки, чтобы захватить каждый элемент.


person comscis    schedule 06.12.2013    source источник
comment
Несколько ответов ниже дают str.length для количества запятых. Технически фактическое количество запятых будет str.length-1, так как есть str.length элементов (с запятыми между каждым). Просто хотел убедиться, что это было упомянуто.   -  person thesquaregroot    schedule 07.12.2013
comment
@thesquaregroot Хороший вопрос, я забыл, что он считал запятые, а не токены.   -  person Kevin Bowersox    schedule 07.12.2013
comment
Однако, читая ваш вопрос еще раз, вы говорите, что в ваших примерах 4 запятых, но на самом деле их только 3 (есть 4 элемента). Так что, возможно, str.length подходит, если вам действительно нужно количество элементов.   -  person thesquaregroot    schedule 07.12.2013
comment
@thesquaregroot отличный момент. Технически я спросил о количестве запятых, но фактическая длина подойдет для моих целей. Хороший глаз однако.   -  person comscis    schedule 07.12.2013


Ответы (3)


Почему бы просто не разделить String. Метод split принимает разделитель (регулярное выражение) в качестве аргумента и разбивает String на String[]. Это избавит от необходимости return to the beginning.

String value = "item1,item2,item3";
String[] tokens = value.split(",");

Чтобы получить количество запятых, просто используйте tokens.length - 1

String.split () Документация

person Kevin Bowersox    schedule 06.12.2013
comment
Круто :) не знал об этом методе для строки! - person comscis; 07.12.2013
comment
@thesquaregroot Да, я только что заметил это при тестировании своего кода. Спасибо! - person Kevin Bowersox; 07.12.2013
comment
Выбрали, потому что все ответы были одинаковыми, а он был первым. Также он добавил документацию. - person comscis; 07.12.2013

Для этого можно использовать Split(), например:

String Line = "item1,item2,item3"
String[] words =Line.split(",");
person Kaushik Sivakumar    schedule 06.12.2013

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

Java: как Я подсчитываю количество вхождений символа в строку?

person Mathias    schedule 06.12.2013