Java String nueva línea

133

Tengo una cuerda como

"I am a boy".

Quiero imprimir así

"I 
am 
a
boy".

Alguien puede ayudarme?

Md. Rashedul Hasan
fuente

Respuestas:

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
Príncipe John Wesley
fuente
@the_prole explicado aquí
Prince John Wesley
La tercera opción es la mejor para la portabilidad.
Amos Bordowitz
117

También puedes usar System.lineSeparator():

String x = "Hello," + System.lineSeparator() + "there";
Emalton
fuente
8
En las versiones anteriores de Java: System.getProperty("line.separator").
RUMANIA_engineer
1
Atajo: String x = "Hello, %n there";. Se agregaron espacios alrededor %nsolo por el bien de la legibilidad.
Manoj Shrestha
49

Ejemplo

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

Salida

I 
 am 
 a 
 boy

Explicación

Es mejor usarlo %ncomo un carácter de nueva línea independiente del sistema operativo en lugar de \ny es más fácil que usarSystem.lineSeparator()

Por qué usarlo %n, porque en cada sistema operativo, la nueva línea se refiere a un conjunto diferente de caracteres;

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

LF es el acrónimo de Line Feed y CR es el acrónimo de Carriage Return . Los caracteres de escape se escriben dentro del paréntesis. Entonces, en cada sistema operativo, la nueva línea representa algo específico del sistema. %nes independiente del sistema operativo, es portátil. Significa \nen sistemas Unix o \r\nen sistemas Windows, etc. Por lo tanto, no use \n, en su lugar use %n.

Levent Divilioglu
fuente
1
ver sección Separador de línea en documentos
Lu55
29

Se puede hacer de varias maneras. Menciono 2 formas simples.

  1. De manera muy simple como a continuación:

    System.out.println("I\nam\na\nboy");
  2. También se puede hacer con concatenación de la siguiente manera:

    System.out.println("I" + '\n' + "am" + '\n' + "a" + '\n' + "boy");
Ripon Al Wasim
fuente
15

Tratar:

System.out.println("I\nam\na\nboy");
Andrea Girardi
fuente
13

Para hacer que el código sea portátil a cualquier sistema, usaría:

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

Esto es importante porque diferentes sistemas operativos usan diferentes notaciones para la nueva línea: Windows usa "\ r \ n", Mac clásico usa "\ r", y Mac y Linux usan "\ n".

Comentaristas: corríjanme si me equivoco en esto ...

Amos Bordowitz
fuente
7

\n se usa para hacer una línea separada;

Ejemplo:

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

Resultado:

I
am
boy
Surendar D
fuente
44
Por favor, lea otras respuestas primero. Tu solución ya está ahí.
Honza Zidek
6

Si simplemente desea imprimir una nueva línea en la consola, puede usar ´ \ n´ para las nuevas líneas.

Si desea dividir el texto en los componentes de swing, puede usar html:

String s = "<html>first line<br />second line</html>";
Stephan
fuente
Esto funciona para mi. Y estoy usando la fuente Unicode. Esto funciona mejor
Sahan
5

Si desea que su código sea no específico, debe usar println para cada palabra

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

porque Windows usa "\ r \ n" como nueva línea y los sistemas unixoides usan solo "\ n"

println siempre usa el correcto

Hachi
fuente
3
Esta no es una buena solución para escribir demasiados System.out.println ()
Ripon Al Wasim
@op Recuerde que println()agrega un carácter de nueva línea al final de la cadena (no al principio).
Wolfpack'08
@Hachi, System.lineSeparator()o System.getProperty("line.separator")puede usarse para hacer que el sistema de código sea independiente.
Ashish Kumar
3

¿Qué pasa con el %nuso de un formateador como String.format()?

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

Como esta respuesta dice, su disposición a partir de Java 1.5 y es otra forma de System.getProperty("line.separator")u System.lineSeparator(), y, de esta manera dos, es independiente del sistema operativo .

Alex Sifuentes
fuente
2

Saltos de línea independientes de la plataforma

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

Salida: bandham manikanta

Notas: Java 6: System.getProperty("line.separator") Java 7 & above: System.lineSeparator()

Bandham Manikanta
fuente
1

Ejemplo de programa completo, con un toque divertido:

Abra un nuevo documento en blanco y guárdelo como %yourJavaDirectory%/iAmABoy/iAmABoy.java . "iAmABoy" es el nombre de la clase.

Pegue el siguiente código y léalo. Recuerde, soy un principiante, ¡así que agradezco todos los comentarios!

//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!");
    } 

}

Ahora, en terminal / cmd, busque %yourJavaDirectory%/iAmABoyy escriba:

javac iAmABoy.java
java iAmABoy I am a boy

¡Puedes reemplazar los args I am a boycon cualquier cosa!

Wolfpack'08
fuente
No necesitas dos bucles. Pase argsdirectamente nlSeparated()ao nlSeparated()tome un escalar en Stringlugar de una matriz. La primera opción es probablemente mejor. Además, imprima su firma con en printlnlugar de print.
Mad Physicist
En main, reemplace for (String arg : args) { nlSeparated(arg); }con solo nlSeparated(args);. nlSeparatedya acepta una lista de Strings. Para una mejor explicación, vea aquí: stackoverflow.com/a/12534579/2988730
Mad Physicist
1

Ve por una división.

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

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

Esto funciona También le dará un carácter de espacio antes de ingresar el carácter

Tanushree
fuente
0

Yo uso este codigo 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);
    }
}

con terminal puedo usar arg I\\nam\\na\\boypara System.out.printlnimprimir

I
am
a
boy

ingrese la descripción de la imagen aquí

Tung Duong
fuente
-1

puede usar la <br>etiqueta en su cadena para mostrar en páginas html

Mehdi Roostaeian
fuente
2
Siempre es una mala idea incrustar el marcado en su salida. Nunca se sabe qué tecnología de visualización utilizan sus usuarios. Lo mejor es mantenerlo lo más genérico posible y usar un filtro de formato para mostrar si es necesario.
TMN
Dije que solo funciona en la página html, es solo una sugerencia para quienes desean mostrar un texto simple en las páginas web.
Mehdi Roostaeian