2013-12-06 7 views
1

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

item1, item2, item3, etc.

item4, item5, item6, etc.

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

+0

В приведенной ниже парам приведено 'str.length' для количества запятых. Технически фактическое количество запятых будет 'str.length-1', так как есть элементы' str.length' (с запятыми между ними). Просто хотел убедиться, что это было упомянуто. – thesquaregroot

+0

@thesquaregroot Хорошая мысль, я забыл, что он считал запятыми не токенами. –

+0

Повторяя ваш вопрос, вы говорите, что в ваших примерах есть 4 запятых, но на самом деле их всего 3 (4 предмета). Поэтому, возможно, 'str.length' является правильным, если вы действительно хотите количество элементов. – thesquaregroot

ответ

5

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

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

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

String.split() Documentation

+0

Awesome :) не знал об этом методе для строки! – comscis

+0

Должно быть просто 'tokens.length' (без парсеров), правильно? – thesquaregroot

+0

@thesquaregroot Да, я просто заметил, что при тестировании моего кода. Благодаря! –

0

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

String Line = "item1,item2,item3" 
String[] words =Line.split(","); 
Смежные вопросы