更快的可能没有了 不过你可以试试org.apache.commons.lang.StringUtils这个类String test ="3123123";
String value = StringUtils.leftPad(test, 10, "0");
ystem.out.println(value);结果就是0003123123

解决方案 »

  1.   

    2楼无疑是最佳方法,但是如果你只想用jdk里的api的话,我有个方法:
    package testPackage;public class StringTest {
        public static void main(String[] args) {
            //假设必须15位长
            int fullLength = 15;
            //假设输入123456
            StringBuilder input = new StringBuilder("123456");
            //预先定义一个15位0
            StringBuilder zero = new StringBuilder("000000000000000");
            
            String result = zero.substring(0, zero.length() - input.length()) + input;
            
            System.out.println(result);
        }
    }
      

  2.   

    二楼的方法挺不好的,apache的那几个工具包挺好使的,不过String类下就有一个格式化的方法: String str = "gr";
    String res = String.format("%5s", str);
    res = res.replaceAll("\\s", "1");
    System.out.println(res);//----------结果:111gr但楼主你还是用二楼提供的方法吧,挺好使的
      

  3.   

    用递归
    public class StringTest {
    public static String str = "123456789";
    private static int length = 20;

    public static void addStrLength(){
    if(str.length() == length)
    return;
    str += 0;
    addStrLength();
    }
    public static void main(String[] args) {
    addStrLength();
    System.out.println(str);
    }
    }
      

  4.   

    递归的效率比较差,家不如直接循环呢,还是不建议用额。呵呵,不过还是感谢。
    用递归
    public class StringTest {
    public static String str = "123456789";
    private static int length = 20;

    public static void addStrLength(){
    if(str.length() == length)
    return;
    str += 0;
    addStrLength();
    }
    public static void main(String[] args) {
    addStrLength();
    System.out.println(str);
    }
    }
      

  5.   

    用递归
    public class StringTest {
    public static String str = "123456789";
    private static int length = 20;

    public static void addStrLength(){
    if(str.length() == length)
    return;
    str += 0;
    addStrLength();
    }
    public static void main(String[] args) {
    addStrLength();
    System.out.println(str);
    }
    }我光看到你不想用循环了,所以没考虑性能问题,就直接想到了递归,嘿嘿嘿不过就是用的第三方库,它内部实现,也是循环的,或者是用正则,只是封装在StringUtils类里面,对于快速不快速还不好说,不过代码量少了很多,写起来方便了我倒是更赞成四楼的方法
      

  6.   

    第三方库还可以使用Google Guava:
    com.google.common.base.Strings.padStart("2010", 3, '0')  returns "2010" 
      

  7.   

    恩,第三方库。commons-lang,一般我是建议所有所有项目都用的。即使一些手机应用,也应该考虑。
    另外,如果只是拼0的话还可以考虑(手写,可能有小bug)...
    if(remaining > 0) {
      char[] originalChars = origin.toCharArray();
      char[] chars = new char[poslength];
      Arrays.fill(chars, 0, remaining, '0'); // 当然这里也是循环
      System.arraycopy(originalChars, 0, chars, 0, length); // 当然这里也涉及循环,但这里不是Java层面的循环,而是底层的指令,速度比较快
      return new String(chars);
    }
    return orgin; // 没必要toString
    ...
      

  8.   

    System.arraycopy(originalChars, 0, chars, remaining, length)
      

  9.   


    String addStr = "000000000000000";
    String srt = "awrawrawr";

    String result = addStr+srt;
    int length = result.length();
    System.out.println(result.substring(length-15,length));这样呢?
      

  10.   

    java字符串操作教程代码实例下载:http://www.zuidaima.com/share/k%E5%AD%97%E7%AC%A6%E4%B8%B2-p1-s1.htm