有没有办法确定在java中打印到输出流的字符数?
例如,在C中,printf返回在该特定语句中打印的字符数。
int i=printf("hello");
printf(i);
上面的代码将打印hello和4;
有没有办法在Java中实现相同的目标?
答案 0 :(得分:1)
您正在打印,因此您知道要显示的字符串。很简单就是你得到字符串长度。
string str="Hello World!";
System.out.println(str);
System.out.println(str.length());
答案 1 :(得分:1)
如果您确实需要此信息,那么我建议使用Jakarta Commons CountingOutputStream。但是,如果您需要在单个打印声明的级别上获取此信息,我会感到惊讶,因此您可以描述您尝试解决的实际问题。
你永远不应该做的一件事是计算你写的字符串中的字符数。当然,除非您可以保证字符串中的字符完全由输出流中的单个字节表示。现在,将来永远存在,当有人开始用重音字符或西里尔字母处理你的字符串时,你不会遇到难以发现的错误。
答案 2 :(得分:1)
有些图书馆可以提供帮助。 Google Guava的CountingOutputStream包含OutputStream
并提供getCount()
方法。这将返回写入的字节,因此取决于编码。请参阅@ parsifal的答案,了解您需要关注的原因。但是,它不提供PrintStream
接口。 Jakarta Commons IO提供了一个具有相同名称的类似类。你可以这样做:
OutputStream os = ...;
CountingOutputStream cos = new CountingOutputStream(os);
PrintStream ps = new PrintStream(cos);
// write to ps.
ps.close();
long count = cos.getCount();
答案 3 :(得分:0)
你可以做到
String s= "hello";
System.out.println(s);
System.out.println(s.length());
答案 4 :(得分:0)
我只使用常规字符串库/ API中的length()
函数。我不确定是否有其他方式或更简单的方法。很想知道!