Nova linha Java String


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

@the_prole explicado aqui
Prince John Wesley

A terceira opção é melhor para portabilidade.
Amos Bordowitz


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.


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");


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 ...


7

\n é usado para fazer linha separada;

Exemplo:

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

Resultado:

I
am
boy

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>";

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


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 .


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()


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!


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);
}

0

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

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


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


-1

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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.