在JAVA中我用  System.out.format();输出一些东西,比如其中有中文与字母   例:"你好java"String s = "你好java";
我使用的是 System.out.format("%10s",s);  这种语法,但是这种控制的是 汉字与字母都是一个宽度。我想控制输出宽度,汉字占用2个宽度,字母占用1个宽度。请教各位一下问如何控制 ?

解决方案 »

  1.   

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

  2.   

    "你好".getBytes("utf-8").length   //或者gbk
    utf-8:汉字三字节
    gbk:汉字两字节