Как прочитать вторую строку из строки в Java - PullRequest
2 голосов
/ 22 февраля 2012

У меня есть строка с несколькими строками, и я хочу прочитать определенную строку и сохранить ее в другой строке. Это мой код

String text ="example text line\n
example text line\n
example text line\n
example text line\n
example text line\n
example text line\n
example text line\n";

String textline1="";
String textline2="";

В приведенных выше строках textline1 и textline2 я хочу сохранить определенную строку.

Ответы [ 3 ]

9 голосов
/ 22 февраля 2012

Вы можете разделить на символ новой строки:

// Чтобы разделить на новую строку

String[] lines = s.split("\\n");

// Для чтения 1-й строки

String line1 = lines[0];
System.out.println(line1);

// Читать 2-ю строку

String line2 = lines[1];
System.out.println(line2);
0 голосов
/ 14 октября 2015

Использование java.io.LineNumberReader также может быть полезно здесь, поскольку оно обрабатывает различные типы концов строк, которые могут встречаться. Из API doc :

Строка считается завершенной любым из перевода строки ('\ n'), возврата каретки ('\ r') или возврата каретки, за которым сразу следует перевод строки.

Пример кода:

package com.dovetail.routing.components.camel.beans;

import static org.assertj.core.api.Assertions.assertThat;

import java.io.IOException;
import java.io.LineNumberReader;
import java.io.StringReader;

import org.testng.annotations.Test;

@Test
public final class SoTest {

    private String text = "example text line 1\nexample text line 2\nexample text line\nexample text line\nexample text line\nexample text line\nexample text line\n";

    String textline1 = "";
    String textline2 = "";

    public void testLineExtract() throws IOException {
        LineNumberReader reader = new LineNumberReader(new StringReader(text));
        String currentLine = null;
        String textLine1 = null;
        String textLine2 = null;
        while ((currentLine = reader.readLine()) != null) {
            if (reader.getLineNumber() == 1) {
                textLine1 = currentLine;
            }
            if (reader.getLineNumber() == 2) {
                textLine2 = currentLine;
            }
        }
        assertThat(textLine1).isEqualTo("example text line 1");
        assertThat(textLine2).isEqualTo("example text line 2");
    }

}
0 голосов
/ 22 февраля 2012

Я бы использовал Гуава Splitter, чтобы превратить text в Iterable<String> (назовите его, скажем, lines).Тогда это просто вопрос получения вашего элемента через Iterables.get(lines, 1);

...