Один из подходов - создать StringReader
из строки, обернуть его в BufferedReader
и использовать его для чтения строк. Кроме того, вы можете просто разделить на \n
, чтобы получить строки, конечно ...
String[] allLines = text.split("\n");
List<String> selectedLines = new ArrayList<String>();
for (int i = 0; i < allLines.length; i += 100)
{
selectedLines.add(allLines[i]);
}
Это более простой код, чем использование BufferedReader
, но это означает наличие полной разделенной строки в памяти (а также оригинала, по крайней мере, временно, конечно). Он также менее гибок в плане адаптации к чтению строк из других источников, таких как файл. Но если это все, что вам нужно, это довольно просто:)
РЕДАКТИРОВАТЬ: Если стартовые индексы тоже нужны, он становится немного более сложным ... но не так уж плохо. Возможно, вы хотите инкапсулировать «начало и конец» в одном классе, но для краткости:
String[] allLines = text.split("\n");
List<String> selectedLines = new ArrayList<String>();
List<Integer> selectedIndexes = new ArrayList<Integer>();
int index = 0;
for (int i = 0; i < allLines.length; i++)
{
if (i % 100 == 0)
{
selectedLines.add(allLines[i]);
selectedIndexes.add(index);
}
index += allLines[i].length + 1; // Add 1 for the trailing "\n"
}
Конечно, учитывая начальный индекс и строку, вы можете получить конечный индекс, просто добавив длину строки:)