Новий рядок Java String


Відповіді:




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 - абревіатура подачі рядків, а CR - акронім повернення перевезення . Символи втечі записуються всередині дужок. Тож у кожній ОС новий рядок означає щось конкретне для системи. %nє агностиком ОС, він портативний. Він розшифровується як для \nсистем Unix, так і для систем \r\nWindows тощо. Таким чином, не використовуйте \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. Це працює краще.
Сахан

5

Якщо ви хочете мати свій код os-неспецифічний, слід використовувати println для кожного слова

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

тому що Windows використовує "\ r \ n", оскільки нові рядки та однокласні системи використовують просто "\ 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.
Божевільний фізик

В main, замінити for (String arg : args) { nlSeparated(arg); }на справедливі nlSeparated(args);. nlSeparatedвже приймає список Strings. Для кращого пояснення дивіться тут: stackoverflow.com/a/12534579/2988730
Божевільний фізик

1

Ідіть на розкол.

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

0

System.out.println ("I \ nam \ na \ 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-сторінці, це лише пропозиція для тих, хто хоче показати простий текст на веб-сторінках.
Мехді Роостаян
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.