在java中打印带有空字符的字符串
我有一个包含空字符的字符串,即在java中打印带有空字符的字符串,java,string,character-encoding,binary-data,Java,String,Character Encoding,Binary Data,我有一个包含空字符的字符串,即\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使用Java 5或更高版本的代码的正确输出是 public class Te
\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使用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);
}
}
7abc def
将
字符串
转换为字符
数组是另一种选择。这对我很有用:
System.out.println(s.toCharArray());
它将
abcdef
输出到控制台(eclipse)。如果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方法,所有数据都通过过滤器。对我有效(Eclipse控制台),输出是
7abc def
-在哪个系统、哪个控制台上启动了程序?它打印abc def
。你还希望它打印什么?(abc&def之间实际上没有空格,它是一个空字符,但它会打印出来)所以您想要在输出中使用\u0000
?顺便说一句,在这个上下文中没有很好的理由编写新字符串(“abc\u0000def”)。“abc\u0000def”就足够了。您想要abc def
作为输出,还是真正想要abc\u0000def
?