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

134

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

"I am a boy".

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

"I 
am 
a
boy".

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

Md. Rashedul Hasan
источник

Ответы:

142
System.out.println("I\nam\na\nboy");

System.out.println("I am a boy".replaceAll("\\s+","\n"));

System.out.println("I am a boy".replaceAll("\\s+",System.getProperty("line.separator"))); // portable way
Принц Джон Уэсли
источник
@the_prole объяснил здесь
Принц Джон Уэсли
Третий вариант лучше всего подходит для портативности.
Амос Бордовиц
117

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

String x = "Hello," + System.lineSeparator() + "there";
Emalton
источник
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");
Рипон Аль Васим
источник
15

Пытаться:

System.out.println("I\nam\na\nboy");
Андреа Жирарди
источник
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
Сурендар D
источник
4
Пожалуйста, прочтите сначала другие ответы. Ваше решение уже есть.
Honza Zidek
6

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

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

String s = "<html>first line<br />second line</html>";
Stephan
источник
Это работает для меня. И я использую шрифт 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 всегда использует правильный

Hachi
источник
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чем угодно!

Wolfpack'08
источник
Две петли не понадобятся. Либо перейдите 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);
}
mrVoid
источник
0

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

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

Tanushree
источник
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