Nova linha Java String

133

Eu tenho cordas como

"I am a boy".

Quero imprimir assim

"I 
am 
a
boy".

Alguém pode me ajudar?

Md. Rashedul Hasan
fonte

Respostas:

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
Prince John Wesley
fonte
@the_prole explicado aqui
Prince John Wesley
A terceira opção é melhor para portabilidade.
Amos Bordowitz
117

Você também pode usar System.lineSeparator():

String x = "Hello," + System.lineSeparator() + "there";
Emalton
fonte
8
Nas versões mais antigas do Java: System.getProperty("line.separator").
ROMANIA_engineer 29/02
1
Atalho: String x = "Hello, %n there";. Adicionado espaço ao redor %napenas para facilitar a leitura.
Manoj Shrestha
49

Exemplo

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

Resultado

I 
 am 
 a 
 boy

Explicação

É melhor usar %ncomo um caractere de nova linha independente do SO, \ne é mais fácil do que usarSystem.lineSeparator()

Por que usar %n, porque em cada sistema operacional, a nova linha se refere a um conjunto diferente de caracteres;

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

LF é a sigla de Line Feed e CR é a sigla de Carriage Return . Os caracteres de escape são escritos entre parênteses. Portanto, em cada sistema operacional, a nova linha representa algo específico para o sistema. %né independente do sistema operacional, é portátil. Ele representa \nsistemas Unix ou \r\nsistemas Windows e assim por diante. Portanto, não use \n, use %n.

Levent Divilioglu
fonte
1
consulte a seção Separador de linhas nos documentos
Lu55
29

Isso pode ser feito de várias maneiras. Estou mencionando duas maneiras simples.

  1. Maneira muito simples como abaixo:

    System.out.println("I\nam\na\nboy");
  2. Também pode ser feito com concatenação como abaixo:

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

Experimentar:

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

Para tornar o código portátil para qualquer sistema, eu usaria:

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

Isso é importante porque diferentes sistemas operacionais usam notações diferentes para a nova linha: o Windows usa "\ r \ n", o Classic Mac usa "\ r" e o Mac e Linux usam "\ n".

Comentaristas - corrija-me se eu estiver errado quanto a isso ...

Amos Bordowitz
fonte
7

\n é usado para fazer linha separada;

Exemplo:

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

Resultado:

I
am
boy
Surendar D
fonte
4
Por favor, leia outras respostas primeiro. Sua solução já está lá.
Honza Zidek
6

Se você simplesmente deseja imprimir uma nova linha no console, pode usar '\ n' para novas linhas.

Se você deseja quebrar o texto nos componentes do balanço, pode usar o html:

String s = "<html>first line<br />second line</html>";
Stephan
fonte
Isso funciona para mim. E eu estou usando fonte unicode. Isso funciona melhor.
Sahan 11/07/19
5

Se você deseja que seu código seja inespecífico, use println para cada palavra

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

porque o Windows usa "\ r \ n" como nova linha e sistemas unixóides usam apenas "\ n"

println sempre usa o correto

Hachi
fonte
3
Esta não é uma boa solução para escrever muitos System.out.println ()
Ripon Al Wasim
@op Lembre-se de que println()adiciona um caractere de nova linha no final da string (não no começo).
Wolfpack'08
@Hachi, System.lineSeparator()ou System.getProperty("line.separator")pode ser usado para tornar o sistema de código independente.
Ashish Kumar
3

Que tal %nusar um formatador como String.format():?

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

Como esta resposta diz, está disponível no java 1.5 e é outra maneira de System.getProperty("line.separator")ou System.lineSeparator()e, como esses dois, é independente do SO .

Alex Sifuentes
fonte
2

Quebras de linha independentes de plataforma

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

Resultado: bandham manikanta

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

Bandham Manikanta
fonte
1

Exemplo de programa completo, com um toque divertido:

Abra um novo documento em branco e salve-o como %yourJavaDirectory%/iAmABoy/iAmABoy.java. "iAmABoy" é o nome da classe.

Cole o seguinte código e leia-o. Lembre-se, eu sou iniciante, então agradeço todo o feedback!

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

}

Agora, no terminal / cmd, procure %yourJavaDirectory%/iAmABoye digite:

javac iAmABoy.java
java iAmABoy I am a boy

Você pode substituir os argumentos I am a boypor qualquer coisa!

Wolfpack'08
fonte
Você não precisa de dois loops. Passe argsdiretamente para nlSeparated()ou faça nlSeparated()pegar um escalar em Stringvez de uma matriz. A primeira opção é provavelmente melhor. Além disso, imprima sua assinatura com em printlnvez de print.
Mad Physicist
Em main, substitua for (String arg : args) { nlSeparated(arg); }por apenas nlSeparated(args);. nlSeparatedjá aceita uma lista de Strings. Para uma explicação melhor, veja aqui: stackoverflow.com/a/12534579/2988730
Mad Physicist
1

Vá para uma divisão.

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

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

Isso funciona Também fornecerá um caractere de espaço antes de inserir o caractere

Tanushree
fonte
0

Eu uso esse código 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);
    }
}

com o terminal eu posso usar arg I\\nam\\na\\boypara fazer a System.out.printlnimpressão

I
am
a
boy

insira a descrição da imagem aqui

Tung Duong
fonte
-1

você pode usar a <br>tag na sua string para mostrar nas páginas html

Mehdi Roostaeian
fonte
2
É sempre uma má idéia incorporar a marcação na sua saída. Você nunca sabe qual tecnologia de exibição seus usuários estão usando. É melhor mantê-lo o mais genérico possível e use um filtro de formatação para exibição, se necessário.
TMN
Eu disse que simplesmente funciona na página html, é apenas uma sugestão para quem deseja mostrar um texto simples nas páginas da web.
Mehdi Roostaeian