日期:2014-05-20  浏览次数:20758 次

JAVA输出中 输出宽度问题
在JAVA中我用 System.out.format();输出一些东西,比如其中有中文与字母 例:"你好java"

String s = "你好java";
我使用的是 System.out.format("%10s",s); 这种语法,但是这种控制的是 汉字与字母都是一个宽度。

我想控制输出宽度,汉字占用2个宽度,字母占用1个宽度。请教各位一下问如何控制 ?



------解决方案--------------------
%ms,其中m代表输出字符的个数,也就是最终打印的宽度。
如果你非要按照字节个数来加以控制的话,那就通过s.getBytes().length进行判断,到底是需要补齐空格还是截断字符串。
奉劝啊,最好别这么干(根据你自己的需要):
1.汉字在不同的编码下所占的字节个数并不一致,有些是2个字节,有的是3个字节;
2.一个汉字本生就是需要几个字节来存储的,硬要拆开了,那就什么都不是了。
------解决方案--------------------
"你好".getBytes("utf-8").length //或者gbk
utf-8:汉字三字节
gbk:汉字两字节