6

我有包含空字符的字符串,即\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

将转换Stringchar数组是一种替代方法。这对我有用:

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 回答