Новая строка Java String


134

У меня есть строка вроде

"I am a boy".

Я хочу напечатать вот так

"I 
am 
a
boy".

Кто-нибудь может мне помочь?

Ответы:



117

Вы также можете использовать System.lineSeparator():

String x = "Hello," + System.lineSeparator() + "there";

8
В более старых версиях Java: System.getProperty("line.separator").
ROMANIA_engineer

1
Клавиши быстрого доступа: String x = "Hello, %n there";. Добавлены пробелы вокруг %nтолько для удобства чтения.
Manoj Shrestha

49

пример

System.out.printf("I %n am %n a %n boy");

Вывод

I 
 am 
 a 
 boy

объяснение

Лучше использовать %nкак независимый от ОС символ новой строки, а не \nи это проще, чем использоватьSystem.lineSeparator()

Зачем использовать %n, потому что в каждой ОС новая строка относится к разному набору символа (ов);

Unix and modern Mac's   :   LF     (\n)
Windows                 :   CR LF  (\r\n)
Older Macintosh Systems :   CR     (\r)

LF - это аббревиатура от Line Feed, а CR - от Carriage Return . Управляющие символы записываются внутри скобок. Таким образом, в каждой ОС новая строка обозначает что-то специфическое для системы. %nне зависит от ОС, это переносимо. Это означает в \nсистемах Unix или \r\nв системах Windows и так далее. Таким образом, не используйте \n, вместо этого используйте %n.


1
см. раздел «Разделитель строк» в документации
Lu55

29

Это можно сделать несколькими способами. Я упоминаю 2 простых способа.

  1. Очень простой способ, как показано ниже:

    System.out.println("I\nam\na\nboy");
  2. Это также можно сделать с помощью конкатенации, как показано ниже:

    System.out.println("I" + '\n' + "am" + '\n' + "a" + '\n' + "boy");


13

Чтобы сделать код переносимым в любую систему, я бы использовал:

public static String newline = System.getProperty("line.separator");

Это важно, потому что разные ОС используют разные обозначения для новой строки: Windows использует «\ r \ n», классический Mac использует «\ r», а Mac и Linux используют «\ n».

Комментаторы - поправьте меня, пожалуйста, если я ошибаюсь ...


7

\n используется для выделения отдельной строки;

Пример:

System.out.print("I" +'\n'+ "am" +'\n'+ "boy"); 

Результат:

I
am
boy

4
Пожалуйста, прочтите сначала другие ответы. Ваше решение уже есть.
Honza Zidek

6

Если вы просто хотите напечатать новую строку в консоли, вы можете использовать «\ n» для новой строки.

Если вы хотите разбить текст в компонентах Swing, вы можете использовать html:

String s = "<html>first line<br />second line</html>";

Это работает для меня. И я использую шрифт Unicode. Так работает лучше.
Sahan

5

Если вы хотите, чтобы ваш код не зависел от ОС, вы должны использовать println для каждого слова

System.out.println("I");
System.out.println("am");
System.out.println("a");
System.out.println("boy");

потому что Windows использует "\ r \ n" в качестве новой строки, а системы unixoid используют только "\ n"

println всегда использует правильный


3
Это не лучшее решение, чтобы писать слишком много System.out.println ()
Рипон Аль Васим,

@op Помните, что println()в конец строки (а не в начало) добавляется символ новой строки .
Wolfpack'08,

@Hachi, System.lineSeparator()или System.getProperty("line.separator")может использоваться, чтобы сделать систему кода независимой.
Ашиш Кумар

3

А как насчет %nиспользования такого форматера String.format()?:

String s = String.format("I%nam%na%nboy");

Как говорится в этом ответе , он доступен из java 1.5 и является другим способом System.getProperty("line.separator")или, System.lineSeparator()и, как эти два, не зависит от ОС .


2

Разрывы строк, не зависящие от платформы

finalString = "bandham" + System.lineSeparator() + "manikanta"; System.out.println(finalString);

Вывод: bandham manikanta

Ноты: Java 6: System.getProperty("line.separator") Java 7 & above: System.lineSeparator()


1

Пример полной программы с интересным поворотом:

Откройте новый пустой документ и сохраните его как %yourJavaDirectory%/iAmABoy/iAmABoy.java. «iAmABoy» - это имя класса.

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

//The class name should be the same as your Java-file and directory name.
class iAmABoy {

    //Create a variable number of String-type arguments, "strs"; this is a useful line of code worth memorizing.
    public static void nlSeparated(String... strs) {

        //Each argument is an str that is printed.
        for (String str : strs) {

            System.out.println(str);

        }

    }

    public static void main(String[] args) {

        //This loop uses 'args' .  'Args' can be accessed at runtime.  The method declaration (above) uses 'str', but the method instances (as seen below) can take variables of any name in the place of 'str'.
        for (String arg : args) {

            nlSeparated(arg);

        }

        //This is a signature.  ^^
        System.out.print("\nThanks, Wolfpack08!");
    } 

}

Теперь в терминале / cmd перейдите %yourJavaDirectory%/iAmABoyи введите:

javac iAmABoy.java
java iAmABoy I am a boy

Вы можете заменить аргументы I am a boyчем угодно!


Две петли не понадобятся. Либо перейдите argsнапрямую, nlSeparated()либо заставьте nlSeparated()взять скаляр Stringвместо массива. Первый вариант, наверное, лучше. Кроме того, распечатайте свою подпись с помощью printlnвместо print.
Mad Physicist

В mainзаменить for (String arg : args) { nlSeparated(arg); }на просто nlSeparated(args);. nlSeparatedуже принимает список Strings. Для лучшего объяснения см. Здесь: stackoverflow.com/a/12534579/2988730
Mad Physicist

1

Сделайте раскол.

String string = "I am a boy";
for (String part : string.split(" ")) {
    System.out.println(part);
}

0

System.out.println ( "I \ Nam \ на \ nboy");

Это работает.Он также даст один пробел перед вводом символа


0

Я использую этот код String result = args[0].replace("\\n", "\n");

public class HelloWorld {

    public static void main(String[] args) {
        String result = args[0].replace("\\n", "\n");
        System.out.println(result);
    }
}

с терминалом я могу использовать arg, I\\nam\\na\\boyчтобы System.out.printlnраспечатать

I
am
a
boy

введите описание изображения здесь


-1

вы можете использовать <br>тег в своей строке для отображения на html-страницах


2
Встраивать разметку в вывод всегда - плохая идея. Вы никогда не знаете, какую технологию отображения используют ваши пользователи. Лучше всего сохранить его как можно более общим и при необходимости использовать фильтр форматирования для отображения.
TMN

Я сказал, что это просто работает на html-странице, это просто предложение для тех, кто хочет отображать простой текст на веб-страницах.
Mehdi Roostaeian
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.