6

null 文字を含む文字列があります\0。Javaで文字列全体を印刷するにはどうすればよいですか?

String s = new String("abc\u0000def");
System.out.println(s.length());

System.out.println(s);

Eclipse コンソールでの出力:

7
abc

長さは完全な文字列の長さですが、文字列全体を印刷するにはどうすればよいですか?

更新:私は使用しています

Eclipse Helios サービス リリース 2

Java 1.6

4

3 に答える 3

3

Stringを配列に変換することcharも代替手段です。これは私のために働く:

System.out.println(s.toCharArray());

コンソールへの出力abcdef(Eclipse)。

于 2013-03-11T11:43:35.650 に答える
2

Eclipse が協力しない場合は、印刷する前にヌル文字をスペースに置き換えることをお勧めします。

System.out.println(s.replace('\u0000', ' '));

多くの場所でこれを行う必要がある場合は、System.out 自体からそれらをフィルター処理するためのハックを次に示します。

import java.io.*;

...

System.setOut(new PrintStream(new FilterOutputStream(
        new FileOutputStream(FileDescriptor.out)) {
    public void write(int b) throws IOException {
        if (b == '\u0000') b = ' ';
        super.write(b);
    }
}));

次に、すべてのデータがフィルターを通過する状態で、通常どおり System.out メソッドを呼び出すことができます。

于 2013-03-11T16:14:45.550 に答える
1

Java 5 以降を使用したコードの正しい出力は次のとおりです。

public class TestMain
{
    public static void main(String args[])
    {
        String s = new String("abc\u0000def");
        System.out.println(s.length());
        System.out.println(s);
    }
}

7
abc デフ

于 2013-03-11T11:34:51.577 に答える