Как перенести строку в java
Перейти к содержимому

Как перенести строку в java

  • автор:

Добавление символа новой строки в строку в Java

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

Давайте обсудим, как использовать символы новой строки.

2. Добавление символов новой строки в строку​

В операционных системах есть специальные символы, обозначающие начало новой строки. Например, в Linux новая строка обозначается символом « \n» , также называемым переводом строки . В Windows новая строка обозначается с помощью « \r\n » , иногда называемого возвратом каретки и переводом строки или CRLF .

Добавить новую строку в Java так же просто, как добавить « \n» , « \r» или « \ r \n» в конце нашей строки.

2.1. Использование разрывов строк CRLF​

В этом примере мы хотим создать абзац, используя две строки текста. В частности, мы хотим, чтобы строка2 отображалась в новой строке после строки1 .

Для ОС Unix/Linux/New Mac мы можем использовать « \n»:

 String line1 = "Humpty Dumpty sat on a wall.";   String line2 = "Humpty Dumpty had a great fall.";   String rhyme = line1 + "\n" + line2; 

Если мы работаем в ОС на базе Windows, мы можем использовать « \r\n»:

 rhyme = line1 + "\r\n" + line2; 

Для старой ОС на базе Mac мы можем использовать « \r»:

 rhyme = line1 + "\r" + line2; 

Мы продемонстрировали три метода добавления новой строки, но, к сожалению, они зависят от платформы.

2.2. Использование независимых от платформы разделителей строк​

Мы можем использовать системные константы, когда хотим, чтобы наш код не зависел от платформы.

Например, используя System.lineSeparator() для указания разделителя строк:

 rhyme = line1 + System.lineSeparator() + line2; 

Или мы могли бы также использовать System.getProperty(“line.separator”) :

 rhyme = line1 + System.getProperty("line.separator") + line2; 

2.3. Использование независимых от платформы символов новой строки​

Хотя разделители строк обеспечивают независимость от платформы, они заставляют нас объединять наши строки.

Если мы используем что-то вроде System.out.printf или String.format , то независимый от платформы символ новой строки %n можно использовать непосредственно внутри строки :

 rhyme = "Humpty Dumpty sat on a wall.%nHumpty Dumpty had a great fall."; 

Это то же самое, что включить System.lineSeparator() в нашу строку, но нам не нужно делить строку на несколько частей.

3. Добавление символов новой строки на HTML-страницу​

Предположим, мы создаем строку, являющуюся частью HTML-страницы. В этом случае мы можем добавить HTML-тег разрыва
.

Мы также можем использовать символы Юникода «& #13;». (Возврат каретки) и «& #10;» (перевод строки). Хотя эти персонажи работают, они работают не совсем так, как можно было бы ожидать, на всех платформах. Вместо этого лучше использовать
для разрыва строки.

Кроме того, мы можем использовать «\n» в некоторых элементах HTML для разрыва строки.

В целом, это три метода разрыва строки в HTML. Мы можем решить, какой из них использовать, в зависимости от используемого тега HTML.

3.1. Тег разрыва HTML​

Мы можем использовать HTML-тег разрыва
для разрыва строки:

 rhyme = line1 + "
"
+ line2;

Тег
для разрыва строки работает почти во всех элементах HTML, таких как ,

, и т. д. Однако обратите внимание, что он не работает в теге .

3.2. Символ новой строки​

Мы можем использовать ‘\n’ для разрыва строки, если текст заключен в теги или :

 rhyme = line1 + "\n" + line2; 

3.3. Символы Юникода​

Наконец, мы можем использовать символы Юникода «& #13;». (Возврат каретки) и «& #10;» (Перевод строки) для разрыва строки. Например, в теге мы можем использовать любой из них:

 rhyme = line1 + " " + line2;  rhyme = line1 + " " + line2; 

Для тега будут работать обе приведенные ниже строки:

 rhyme = line1 + " " + line2;  rhyme = line1 + "  " + line2; 

4. Разница между \n и \r ​

\r и \n — символы, обозначаемые значениями ASCII 13 (CR) и 10 (LF) соответственно. Оба они представляют разрыв между двумя строками , но операционные системы используют их по-разному.

В Windows для начала новой строки используется последовательность из двух символов: сразу за CR следует LF. И наоборот, в Unix-подобных системах используется только LF.

При написании Java-приложений мы должны обращать внимание на символы разрыва строки, которые мы используем, потому что приложения будут вести себя по-разному в зависимости от операционной системы, в которой они будут работать.

Самый безопасный и совместимый вариант — использовать System.lineSeparator(). Таким образом, нам не придется учитывать операционную систему.

5. Вывод​

В этой статье мы обсудили, как добавить символы новой строки в строку в Java.

Мы также увидели, как написать независимый от платформы код для новой строки, используя System.lineSeparator() и System.getProperty(“line.separator”) .

Наконец, мы закончили с тем, как добавить новую строку в случае, если мы создаем HTML-страницу.

Полную реализацию этой статьи можно найти на GitHub .

  • 1. Обзор
  • 2. Добавление символов новой строки в строку
    • 2.1. Использование разрывов строк CRLF
    • 2.2. Использование независимых от платформы разделителей строк
    • 2.3. Использование независимых от платформы символов новой строки
    • 3.1. Тег разрыва HTML
    • 3.2. Символ новой строки
    • 3.3. Символы Юникода

    Как перенести на новую строку java

    В Java, чтобы сделать перенос на новую строку, можно использовать специальный символ – \n . Это символ перевода строки. Попробуем вывести на экран такую строку:

    System.out.println("- Are you hungry?\n- Aaaarrrgh!"); 

    Результат на экране будет следующий:

    Как перенести строку в java

    Чтобы перенести строку в Java , вы можете использовать символ переноса строки \n Например:

    String text = "Это первая строка\nЭто вторая строка"; System.out.println(text); 

    Java: Экранирующие последовательности

    Мы хотим показать диалог Матери Драконов со своим ребенком:

    - Are you hungry? - Aaaarrrgh! 

    Если вывести на экран строку с таким текстом:

    System.out.println("- Are you hungry?- Aaaarrrgh!"); 
    - Are you hungry?- Aaaarrrgh!

    Не то, что мы хотели. Строки расположены друг за другом, а не одна ниже другой. Нам нужно как-то сказать интерпретатору «нажать на Enter» — сделать перевод строки после вопросительного знака. Это можно сделать, используя символ перевода строки: \n :

    System.out.println("- Are you hungry?\n- Aaaarrrgh!"); 
    - Are you hungry? - Aaaarrrgh!

    \n — это специальный символ. В литературе его часто обозначают как LF (Line Feed). Возможно, вы сейчас подумали, что это опечатка, ведь здесь мы видим два символа \ и n , но это не так. С точки зрения компьютера — это один невидимый символ перевода строки:

    // Мы это не изучали, но вы должны знать правду // Ниже код, который возвращает длину строки "a".length(); // 1 "\n".length(); // 1 . "\n\n".length(); // 2 . 

    Почему так сделано? \n — всего лишь способ записать символ перевода строки, но сам перевод строки по своему смыслу – это один символ, правда, невидимый.

    Именно поэтому и возникла такая задача. Нужно было как-то представить его на клавиатуре. А поскольку количество знаков на клавиатуре ограничено и отдано под самые важные, то все специальные символы реализуются в виде таких обозначений.

    Символ перевода строки не является чем-то специфичным для программирования. Все, кто хоть раз печатал на компьютере, использовал перевод строки, нажимая на Enter.

    Во многих редакторах есть опция, позволяющая включить отображение невидимых символов. Эта опция помогает понять, где они находятся, хотя это всего лишь схематичное отображение, ведь у этих невидимых символов нет графического представления:

    - Привет!¶ - О, привет!¶ - Как дела?

    Устройство, которое выводит соответствующий текст, учитывает этот символ. Например, принтер при встрече с LF протаскивает бумагу вверх на одну строку, а текстовый редактор переносит весь последующий текст ниже, также на одну строку.

    \n — это пример экранирующей последовательности (escape sequence). Их еще называют управляющими конструкциями. Хотя таких символов не один десяток, в программировании часто встречаются всего несколько.

    Кроме перевода строки, к таким символам относятся:

    • Табуляция — разрыв, получаемый при нажатии на кнопку Tab
    • Возврат каретки (только в Windows)

    Программистам часто нужно использовать перевод строки \n для правильного форматирования текста:

    System.out.println("Gregor Clegane\nDunsen\nPolliver\nChiswyck"); 

    На экран выведется:

    Gregor Clegane Dunsen Polliver Chiswyck 

    Обратите внимание на следующие моменты:

    1. Не имеет значения, что стоит перед или после \n : символ или пустая строка. Перевод будет обнаружен и выполнен в любом случае
    2. Помните, что строка может содержать один символ или вообще ноль символов. А еще строка может содержать только \n . Проанализируйте следующий пример:

    System.out.println("\n"); System.out.println("Dunsen"); 

    Здесь мы сначала выводим строку «перевод строки», а потом делаем вывод обыкновенной строки. Программа выведет на экран:

     
    Dunsen

    Почему перед строкой Dunsen появилось две пустые строки, а не одна? Дело в том, что System.out.println() при выводе значения автоматически добавляет в конец символ перевода строки. Таким образом, один перевод строки мы указали явно, передав этот символ экранирующей последовательности аргументом в функцию, а второй перевод строки добавлен самой функцией автоматически. Еще пример кода:

    System.out.println("Polliver"); System.out.println("Gregor Clegane"); System.out.println(); System.out.println("Chiswyck\n"); System.out.println("Dunsen"); 

    Вывод будет таким:

    Polliver Gregor Clegane Chiswyck Dunsen 
    System.out.println("Joffrey loves using \\n"); 

    на экран выйдет:

    Joffrey loves using \n 

    Небольшое, но важное замечание про Windows. В Windows для перевода строк по умолчанию используется \r\n — это связано с историческими причинами. Такая комбинация хорошо работает только в Windows, но создает проблемы при переносе в другие системы: например, когда в команде разработчиков есть пользователи как Windows, так и Linux.

    Дело в том, что последовательность \r\n имеет разную трактовку в зависимости от выбранной кодировки. Поэтому в среде разработчиков принято всегда использовать \n без \r , так как LF всегда трактуется одинаково и отлично работает в любой системе. Не забудьте настроить ваш редактор на использование \n .

    Задание

    Напишите программу, которая выводит на экран:

    - Did Joffrey agree? - He did. He also said "I love using \n". 

    При этом программа использует только один System.out.println() , но результат на экране должен выглядеть в точности как показано выше.

    Упражнение не проходит проверку — что делать? ��

    Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:

    • Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.

    В моей среде код работает, а здесь нет ��

    Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

    Мой код отличается от решения учителя ��

    Это нормально ��, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.

    В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.

    Прочитал урок — ничего не понятно ��

    Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.

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

    Полезное

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *