我的字符串包含空字符,即\0
。如何在java中打印整个字符串?
String s = new String("abc\u0000def");
System.out.println(s.length());
System.out.println(s);
在eclipse控制台上输出:
7
abc
长度是完整字符串的长度,但是如何打印整个字符串?
更新:我正在使用
Eclipse Helios Service Release 2
Java 1.6
答案 0 :(得分:3)
将String
转换为char
数组是另一种选择。这对我有用:
System.out.println(s.toCharArray());
将abcdef
输出到控制台(eclipse)。
答案 1 :(得分:2)
如果Eclipse不合作,我建议在打印前用空格替换空字符:
System.out.println(s.replace('\u0000', ' '));
如果你需要在很多地方这样做,这里有一个hack从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方法,所有数据都通过过滤器。
答案 2 :(得分: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 def