web-dev-qa-db-ja.com

Java Stringの改行

私はひもが好きです

"I am a boy".

こんな風に印刷したい

"I 
am 
a
boy".

誰かが私を手伝ってくれる?

110
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
129

System.lineSeparator() を使うこともできます。

String x = "Hello," + System.lineSeparator() + "there";
100
Emalton

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

出力

I 
 am 
 a 
 boy

説明

%nの代わりに\nをOSに依存しない改行文字として使うほうが良いですし、System.lineSeparator()を使うよりも簡単です。

なぜ%nを使うのですか?なぜなら、各OSでは、改行が異なる文字セットを参照するからです。

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

_ lf _ 改行 の頭字語、 _ cr _ キャリッジリターン の頭字語です。エスケープ文字は括弧の中に書かれています。そのため、各OSでは、新しい行はシステム固有のものを表します。 %nはOSにとらわれず、移植性があります。 Unixシステムでは\n、Windowsシステムでは\r\nなどを表します。したがって、\nを使用せず、代わりに%nを使用してください。

39

それにはいくつかの方法があります。私は2つの簡単な方法に言及しています。

  1. 以下のように非常に簡単な方法:

    System.out.println("I\nam\na\nboy");
    
  2. 以下のように連結して行うこともできます。

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

試してください:

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

コードをあらゆるシステムに移植できるようにするには、次のようにします。

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

改行に使用するOSによって表記が異なるため、これは重要です。Windowsでは "\ r\n"、Classic Macでは "\ r"、MacとLinuxでは "\ n"が使用されます。

コメンテーター - 私がこれについて間違っているなら私を訂正してください...

9
Amos Bordowitz

\nは別々の行を作るために使われます。

例:

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

結果:

I
am
boy
7
Surendar D

単にコンソールで改行を印刷したい場合は、改行に '\ n'を使用できます。

Swingコンポーネントのテキストを分割したい場合は、htmlを使用できます。

String s = "<html>first line<br />second line</html>";
6
Stephan

自分のコードをos-specificにしたい場合は、Wordごとにprintlnを使用してください。

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

なぜならWindowsは改行として "\ r\n"を使い、unixoidシステムは単に "\ n"を使うからです。

printlnは常に正しいものを使用します

5
Hachi

String.format()のようなフォーマッタを使った%nはどうでしょうか。

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

この答え は、Java 1.5から入手可能であり、System.getProperty("line.separator")またはSystem.lineSeparator()への別の方法であり、この2つのように、 OSに依存しない です。

3
Alex Sifuentes

完全なプログラム例、楽しいひねりを加えたもの:

新しい空白の文書を開き、それを%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!");
    } 

}

では、terminal/cmdで%yourJavaDirectory%/iAmABoyを参照して次のように入力します。

javac iAmABoy.Java
java iAmABoy I am a boy

引数I am a boyは何にでも置き換えることができます!

1
Wolfpack'08

分割してください。

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

System.out.println( "私\ n\n\nボーイ");

これは動作しますそれは文字を入力する前にも一緒に1つのスペース文字を与えます

0
Tanushree

私はこのコードを使います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);
    }
}

ターミナルで私はI\\nam\\na\\boyをプリントアウトさせるためにarg System.out.printlnを使うことができます

I
am
a
boy

enter image description here

0
Tung Duong