У меня есть строка вроде
"I am a boy".
Я хочу напечатать вот так
"I
am
a
boy".
Кто-нибудь может мне помочь?
У меня есть строка вроде
"I am a boy".
Я хочу напечатать вот так
"I
am
a
boy".
Кто-нибудь может мне помочь?
Ответы:
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
Вы также можете использовать System.lineSeparator()
:
String x = "Hello," + System.lineSeparator() + "there";
System.getProperty("line.separator")
.
String x = "Hello, %n there";
. Добавлены пробелы вокруг %n
только для удобства чтения.
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
.
Это можно сделать несколькими способами. Я упоминаю 2 простых способа.
Очень простой способ, как показано ниже:
System.out.println("I\nam\na\nboy");
Это также можно сделать с помощью конкатенации, как показано ниже:
System.out.println("I" + '\n' + "am" + '\n' + "a" + '\n' + "boy");
Пытаться:
System.out.println("I\nam\na\nboy");
Чтобы сделать код переносимым в любую систему, я бы использовал:
public static String newline = System.getProperty("line.separator");
Это важно, потому что разные ОС используют разные обозначения для новой строки: Windows использует «\ r \ n», классический Mac использует «\ r», а Mac и Linux используют «\ n».
Комментаторы - поправьте меня, пожалуйста, если я ошибаюсь ...
\n
используется для выделения отдельной строки;
Пример:
System.out.print("I" +'\n'+ "am" +'\n'+ "boy");
Результат:
I
am
boy
Если вы просто хотите напечатать новую строку в консоли, вы можете использовать «\ n» для новой строки.
Если вы хотите разбить текст в компонентах Swing, вы можете использовать html:
String s = "<html>first line<br />second line</html>";
Если вы хотите, чтобы ваш код не зависел от ОС, вы должны использовать println для каждого слова
System.out.println("I");
System.out.println("am");
System.out.println("a");
System.out.println("boy");
потому что Windows использует "\ r \ n" в качестве новой строки, а системы unixoid используют только "\ n"
println всегда использует правильный
println()
в конец строки (а не в начало) добавляется символ новой строки .
System.lineSeparator()
или System.getProperty("line.separator")
может использоваться, чтобы сделать систему кода независимой.
А как насчет %n
использования такого форматера String.format()
?:
String s = String.format("I%nam%na%nboy");
Как говорится в этом ответе , он доступен из java 1.5 и является другим способом System.getProperty("line.separator")
или, System.lineSeparator()
и, как эти два, не зависит от ОС .
Разрывы строк, не зависящие от платформы
finalString = "bandham" + System.lineSeparator() + "manikanta";
System.out.println(finalString);
Вывод:
bandham
manikanta
Ноты:
Java 6: System.getProperty("line.separator") Java 7 & above: System.lineSeparator()
Пример полной программы с интересным поворотом:
Откройте новый пустой документ и сохраните его как %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
.
main
заменить for (String arg : args) { nlSeparated(arg); }
на просто nlSeparated(args);
. nlSeparated
уже принимает список String
s. Для лучшего объяснения см. Здесь: stackoverflow.com/a/12534579/2988730
Я использую этот код 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
вы можете использовать <br>
тег в своей строке для отображения на html-страницах