int a = 123;
要得到 b="000123"String a ="abc"
要得到 b="000abc"想知道java有没有类似于C语言中的sprintf这样的自带方法,并且适用 于整形和字符串

解决方案 »

  1.   

    用 PrintWriter的printf()函数。
      

  2.   

    直接写给你参考吧:
    System.out.printf("%06d", new Integer(123));
      

  3.   

    自己写一个不就行了public static String  getString(String src , int len){
      
      while(src.length() < len){
        src = "0" + src ;
      }
      return src ;
    }
      

  4.   

    对于数字来说,还容易一点,直接使用String.format,如
    int a = 123;
    String b = String.format("%06d", a);对于字符串来说,补空格容易,补0要自己处理,如
    String a ="abc"
    String b = String.format("%6s%", a); //这里可以补空格
    b = b.replaceAll(" ", "0"); //把空格换成0所以,为了通用,可以使用MessageFormat

    int a = 123;
    String b = MessageFormat.format("{0}{1}", String.format("%03d", 0), a);
    //String.format("%03d", 0)是获得000字符串String a = "abc";
    String b = MessageFormat.format("{0}{1}", String.format("%03d", 0), a);
      

  5.   

    其实直接
    int a = 123;
    String b = String.format("%s%s", String.format("%03d", 0), a);
    也可以,%s也能兼容int类型这样,对于字符串类型也不用改变了
    String a = "abc";
    String b = String.format("%s%s", String.format("%03d", 0), a);
      

  6.   

    定向输出:
    PrintWriter.printf();(类似于C里的fprintf,System.out.printf()类似于C里的printf)
    定向输出字符串:
    String.format();(类似于C里的sprintf)
    public static void main(String[] args) {
    int a=123,b=0xabc;

    String c=String.format("%06d",a);
    String d=String.format("%06x",b); //System.out.printf("%06d\n",a);
    //System.out.printf("%06x\n",b);
    System.out.printf("%s\n",c);
    System.out.println(d);
    }
      

  7.   

    格式化字符串应用十分灵活,如果用到嵌套格式化基本属于画蛇添足的行为了: int a1=123;
    //String b1=String.format("%03d%d",0,a1);
    String b1=String.format("%03d%s",0,a1); String s="abc";
    String s1=String.format("%03d%s",0,s); System.out.println(b1);
    System.out.println(s1);
      

  8.   

    格式化字符串用起来方便,但效率很低,如果要频繁使用的话,不如自己用StringBuilder实现封装成方法调用,如果少量使用的话或者不在乎效率的话就无所谓了
      

  9.   

    我想表达的就是这种方法,我想C++已经有了,java没理由不支持的