2

数行で構成される文字列があるとします。

aaa\nbbb\nccc\n (Linux の場合) または aaa\r\nbbb\r\nccc (Windows の場合)

#次のように、文字列のすべての行に文字を追加する必要があります。

#aaa\n#bbb\n#ccc (Linux の場合) または #aaa\r\n#bbb\r\n#ccc (Windows の場合)

Java を実行する最も簡単でポータブルな(Linux と Windows の間の) 方法は何ですか?

4

3 に答える 3

5

line.separatorシステム プロパティを使用する

String separator = System.getProperty("line.separator") + "#"; // concatenate the character you want
String myPortableString = "#aaa" + separator + "ccc";

これらのプロパティについては、こちらで詳しく説明しています。

のソース コードを開くとPrintWriter、次のコンストラクタがあることがわかります。

public PrintWriter(Writer out,
                   boolean autoFlush) {
    super(out);
    this.out = out;
    this.autoFlush = autoFlush;
    lineSeparator = java.security.AccessController.doPrivileged(
        new sun.security.action.GetPropertyAction("line.separator"));
}

に書き込むためのシステム固有のセパレーターを取得 (および使用) していOutputStreamます。

プロパティレベルでいつでも設定できます

System.out.println("ahaha: " + System.getProperty("line.separator"));
System.setProperty("line.separator", System.getProperty("line.separator") + "#"); // change it
System.out.println("ahahahah:" + System.getProperty("line.separator"));

版画

ahaha: 

ahahahah:
#

そのプロパティを要求するすべてのクラスが取得するようになりました{line.separator}#

于 2013-08-22T16:18:02.953 に答える
2

何を使用しているのか正確にはわかりませんが、PrintWriterprintfメソッドを使用すると、フォーマットされた文字列を書き込むことができます。文字列を使用して%n、プラットフォーム固有の行区切りを出力するフォーマット指定子を使用できます。

System.out.printf("first line%nsecond line");

出力:

first line
second line

(これもサポートする です) System.outPrintStream

于 2013-08-22T16:51:55.333 に答える
1

Java 7 の時点で (ここにも記載されています)、次のメソッドも使用できます。

System.lineSeparator()

これは次と同じです:

System.getProperty("line.separator")

システム依存の行区切り文字列を取得します。公式のJavaDocsからのメソッドの説明を以下に引用します。

システム依存の行区切り文字列を返します。常に同じ値 (システム プロパティ line.separator の初期値) を返します。

UNIX システムでは、「\n」を返します。Microsoft Windows システムでは、"\r\n" を返します。

于 2016-09-26T10:14:56.153 に答える