Подтвердить что ты не робот

Как создать строку с возвратом каретки?

Для теста JUnit мне нужна строка, состоящая из нескольких строк. Но все, что я получаю, это одиночная строка. Я попробовал следующее:

    String str = ";;;;;;\n" +
                 "Name, number, address;;;;;;\n" + 
                 "01.01.12-16.02.12;;;;;;\n" + 
                 ";;;;;;\n" + 
                 ";;;;;;";

Я также пробовал \n\r вместо \n. System.getProperty( "line.separator" ) тоже не работает. он создает \n в String и не возвращает каретки. Итак, как я могу это решить?

4b9b3361

Ответ 1

Спасибо за ваши ответы. Я пропустил, что мои данные хранятся в List<String>, который передается тестируемому методу. Ошибка заключалась в том, что я ввел строку в первый элемент ArrayList. Вот почему я думал, что String состоит всего из одной строки, потому что отладчик показал мне только одну запись.

Ответ 2

Это зависит от того, что вы подразумеваете под "несколькими строками". В разных операционных системах используются разные разделители строк.

В Java \r всегда возвращает карету, а \n - это строка. В Unix достаточно только \n для новой строки, тогда как для многих программ в Windows требуется \r\n. Вы можете использовать на платформе defaultline использовать System.getProperty("line.separator") или использовать String.format("%n"), как указано в других ответах.

Но на самом деле вам нужно знать, пытаетесь ли вы создавать строки новой строки, например, если это текст, который будет передаваться как часть определенного протокола, тогда вы должны увидеть, что этот протокол считает быть новой линией. Например, RFC 2822 определяет разделитель строк \r\n, и это должно использоваться, даже если вы работаете в Unix. Так что все о контексте.

Ответ 3

Самый быстрый способ, которым я знаю, генерировать символ новой строки в Java: String.format("%n")

Конечно, вы можете поместить все, что хотите, вокруг %n, например:

String.format("line1%nline2")

Или даже если у вас много строк:

String.format("%s%n%s%n%s%n%s", "line1", "line2", "line3", "line4")

Ответ 4

Попробуйте \r\n, где \r - возврат каретки. Также убедитесь, что у вашего вывода нет новой строки, потому что отладчик может отображать специальные символы в форме \n, \r, \t и т.д.

Ответ 5

Сделайте это: Шаг 1: Ваша строка

String str = ";;;;;;\n" +
            "Name, number, address;;;;;;\n" + 
             "01.01.12-16.02.12;;;;;;\n" + 
             ";;;;;;\n" + 
             ";;;;;;";

Шаг 2: просто замените все "\n" на "% n", результат выглядит следующим образом:

String str = ";;;;;;%n" +
             "Name, number, address;;;;;;%n" + 
             "01.01.12-16.02.12;;;;;;%n" + 
            ";;;;;;%n" + 
            ";;;;;;";

Заметьте, что я только что положил "% n" вместо "\n"

Шаг 3: Теперь просто выберите формат()

str=String.format(str);

Это все, что вам нужно.

Ответ 6

Попробуйте добавить символы .append('\r').append('\n'); вместо строки .append("\\r\\n");