6

I have string which contains null character ie \0. How can I print the whole string in java?

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

System.out.println(s);

Output on eclipse console:

7
abc

Length is that of complete string, but how can I print the whole string?

UPDATE: I am using

Eclipse Helios Service Release 2

Java 1.6

3 Answers3

3

Converting the String to char array is an alternative. This works for me:

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

Which outputs abcdef to the console (eclipse).

2

If Eclipse won't cooperate, I'd suggest replacing the null characters with spaces before printing:

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

If you need to do this in a lot of places, here's a hack to filter them from System.out itself:

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

Then you can call System.out methods normally, with all the data going through the filter.

Boann
  • 48,794
  • 16
  • 117
  • 146
1

the correct output of your code using Java 5 or higher is

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 def

Sean Patrick Floyd
  • 292,901
  • 67
  • 465
  • 588
Joe2013
  • 1,007
  • 1
  • 9
  • 24