我有包含空字符的字符串,即\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
我有包含空字符的字符串,即\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
将转换String
为char
数组是一种替代方法。这对我有用:
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 方法,所有数据都通过过滤器。
使用 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 定义