对了,难点在中文JAVA算一个字节,如何把中文字符按字节求对呢?"abc" LENGTH为3"大家ABC" LENGTH为5 ,希望结果为7

解决方案 »

  1.   

    StringBuffer strTemp;strTemp = new StringBuffer("abc");strTemp.setLength(20);strLine += strTemp;strTemp = new StringBuffer("大家abc");strTemp.setLength(20);strLine += strTemp;
    这是我的一小段程序,应该如何改造?
      

  2.   

    import java.util.*;
    import java.io.PrintStream;
    import java.text.NumberFormat;
    import java.text.DecimalFormat;
    import java.text.ParseException;
    import java.io.UnsupportedEncodingException;public class text{
      public static String formatNormal(double amount , String pattern){
        NumberFormat nf = NumberFormat.getCurrencyInstance();
        DecimalFormat df = (DecimalFormat)nf;
        df.setDecimalSeparatorAlwaysShown(true);
        df.applyPattern(pattern);
        return df.format(amount);
      }  public static void main(String[] args){
        System.out.print("保留2位") ;
        System.out.println(formatNormal(123.65786456 , "0.00"));
      }}
      

  3.   

    System.out.println(strLine + " length = " + strLine.getBytes().length);
    可以按字节得到长度
      

  4.   

    ZHH309(张) 的解释了一部分问题主要问题是格式输出的问题我要寻找类似C的东西sprintf(buffer,"%-15s%-8s%-40s%",a,b,c);我写的那段程序效率比较低,其中还有几个强制转换,因为程序需要百万级的运行,所以对效率要求比较高总不能让我去补空格的方式实现格式输出吧
      

  5.   

    String s = "%-15s%-8s%-40s%";
    String a = "abc";
    s = s.replaceAll("s%",a);
      

  6.   

    就是定长输出的意思,很多把数据库表生成文件都使用定长方式的例如表字段为A、B、C长度分别为5、10、15那一条记录就生成一行,此行长度为30长度不足补空格
      

  7.   

    public class Test {
        public Test() {
        }
        public String getBlankString(int count) {
            String str = "";
            for (int i = 0; i < count; i++) {
                str = str + " ";
            }
            return str;
        }    public int getStringLength(String str) {
            return str.getBytes().length;
        }    public static void main(String[] args) {
            Test test = new Test();
            int perLineLength = 20;
            String str = new String(("大家abc"));
            int length = test.getStringLength(str);
            String tmp = test.getBlankString(perLineLength - length);
            String strResult = str + tmp;
            System.out.println(strResult);
        }}
    这个能不能满足搂住的要求
      

  8.   

    我觉得真正能满足楼主的可能是用C写的程序了,让java做百万级的运行,真是不太好想象!
      

  9.   

    因为大部分是IO操作,所以JAVA的效率我还是很有信心的,以前也写过这样的程序jokerjava(冷血)的方法是肯定可行的我仅仅是想查找一种类似C的格式化输出的方法目前我的程序是用StringBuffer实现N个空格的填补不知道和jokerjava(冷血)的效率哪个好一点JAVA的效率调试还是很麻烦,不像ORACLE的SQL语句分析那么方便估计JAVA没有类似C的格式化输出的东西,都要自己实现吧
      

  10.   

    我仅仅是猜测C的sprintf(buffer,"%-15s%-8s%-40s%",a,b,c);格式输出,应该不是简单的FOR循环的
      

  11.   

    如果频繁操作字符串  用StringBuffer要好点没见过java有类似C的格式化输出的类