比如长度1000,如果只有三个字符abc 后面自动补997个空格

解决方案 »

  1.   

    可以写一个方法来实现:
    public static String formatStr(String str, int length) { if (str == null) {
    return null;
    }
    int strLen = str.length();
    if (strLen == length) {
    return str;
    } else if (strLen < length) {
    int temp = length - strLen;
    String tem = "";
    for (int i = 0; i < temp; i++) {
    tem = tem + " ";
    }
    return str + tem;
    }else{
    return str.substring(0,length);
    }

    }
      

  2.   

      public static String rightPad(String text, int length, char c) {
        char[] array = new char[length];
        Arrays.fill(array, c);
        System.arraycopy(text.toCharArray(), 0, array, 0, text.length());
        return new String(array);
      }没有做相关参数check
      

  3.   

      public static String rightPad(String text, int length, char c) {
        char[] array = new char[length];
        Arrays.fill(array, text.length(), length, c);
        System.arraycopy(text.toCharArray(), 0, array, 0, text.length());
        return new String(array);
      }更正一下
      

  4.   

    简单的说 字符串在1000~2000之间就会报错,现在想加空格,然后用的时候再trim,避免这个区间
      

  5.   

    反过来想啊,
    你有一个String 1000个空格的String
    那你就想用的时候在String前面加你的字符串啊,长度不就是1000吗前面是你的字符串后面是空格啊,不用循环加空格啊,完全可以生成一个1000个空格的String就行啦
      

  6.   

    11#方法不错,我也写一个:
    public class SimpleTest{
    public static String formatString(String str, int length, String slot){
    StringBuffer sb = new StringBuffer();
    sb.append(str);

    int count = length - str.length();

    while(count > 0){
    sb.append(slot);
    count --;
    }

    return sb.toString();
    }

    public static void main(String[] args) { 
    String str = "abc";

    System.out.println(formatString(str, 1000, "0"));
    }
    }
      

  7.   

    用循环有什么不好?不用循环就这样来:
    String str="abc";
    String result=new  String(Arrays.copyOf(str.toCharArray(),30)).replaceAll(""+(char)0," ");
    System.out.println(result+"|");这是一个指定是30长度的字符串,可以把30用1000替换掉。注意,如果str长度超过30,将被截为30.
      

  8.   

    难道是为了Oracle里的Long类型?
    17楼的好
      

  9.   

    你确定Arrays有copyOf 方法吗
      

  10.   

    你真是太搞笑了 循环1000次就效率低了? 难道Java为了方便 事先给你构造好一个长度1000的字符串给你用吗?看下面的代码:
    long l = System.currentTimeMillis();

    formatString(str, 10000000, "0");//循环1千w次

    System.out.println(System.currentTimeMillis()-l);
    时间不到1s钟。
      

  11.   

    C 定义的char数组就可以自动补空格
      

  12.   


    char数组自动补的是'a'吧?
      

  13.   

    public class Test {
            
        public static void main(String[] args) {
            String str = "abc";
            long t0, t1;
            t0 = System.nanoTime();
            str = appendSpace(str, 5, false);
            t1 = System.nanoTime();
            System.out.println("|" + str + "|");
            System.out.println((t1 - t0) + " ns");
        }    private static String appendSpace(String str, int spaceCount, boolean appendHead) {
            char[] chs = new char[str.length() + spaceCount]; 
            for(int i = appendHead ? 0 : str.length(), j = 0; j < spaceCount; j++) {
                chs[i++] = ' ';
            }
            System.arraycopy(str.toCharArray(), 0, chs, appendHead ? spaceCount : 0, str.length());
            return new String(chs);
        }
    }
      

  14.   

    貌似是有点简单建立一个字符串initStr里面是n个空格,然后自己要添加的字符串为string,把字符串复制到前面就可以了
      

  15.   

    new String(new char[10]).replace((new char[1])[0], ' ')
    跟19楼基本类似
      

  16.   

    我来翻老帖了。总结了楼上的两个方法:
    public static void main(String[] args) {
                String g = "Ganky";
                long l = System.currentTimeMillis();
                formatStr(g,10000000,'0');
                System.out.println(System.currentTimeMillis()-l);
                l = System.currentTimeMillis();
                rightPad(g,10000000,'0');
                System.out.println(System.currentTimeMillis()-l);
    }

    public static String rightPad(String text, int length, char c) {
        char[] array = new char[length];
        System.arraycopy(text.toCharArray(), 0, array, 0, text.length());
        Arrays.fill(array, text.length(), length, c);
        return new String(array);
    }

    public static String formatStr(String str, int length, char c) {
    StringBuffer sb = new StringBuffer(str);
    length = length - str.length();
    for(int i=0;i<length;i++) {
    sb.append(c);
    }
    return sb.toString();
    }经过简单的测试(1000W长度),rightPad方法效率高出不少,相差近10倍
    如果单纯是LZ要求的1000长度的话,基本上没差别(1毫秒以内)
      

  17.   


    String str = "abc";
    str = String.format("%1$-1000s", str);
      

  18.   

    String.format("%-1000s", "abc");
    正负号可以控制空格符是添加到abc之前还是之后
      

  19.   

    刚开始我觉得csdn咋现在竟出些开玩笑的人,看到后来终于看到有人正经起来了
      

  20.   

    public class test
    {
        public static void main(String agrs[])
        {
            String ba="abc";
            String result_ba="";
            result_ba= String.format ("%-1000s", ba);
            System.out.println (result_ba);
        }} 
      

  21.   

    能详细讲解下吗?
    我知道这是返回一个格式化的字符串。
    api中是public static String format(String format,
                                Object... args)
    String是那个基本的字符串,arg貌似是格式?
    看不懂啊?