Java String pad left

Introduction

Left pad a String with spaces (' ').

The String is padded to the size of size.

leftPad(null, *)   = null
leftPad("", 3)     = "   "
leftPad("bat", 3)  = "bat"
leftPad("bat", 5)  = "  bat"
leftPad("bat", 1)  = "bat"
leftPad("bat", -1) = "bat"

Left pad a String with a specified character.

Pad to a size of size.

leftPad(null, *, *)     = null
leftPad("", 3, 'z')     = "zzz"
leftPad("bat", 3, 'z')  = "bat"
leftPad("bat", 5, 'z')  = "zzbat"
leftPad("bat", 1, 'z')  = "bat"
leftPad("bat", -1, 'z') = "bat"

Left pad a String with a specified String.

Pad to a size of size.

leftPad(null, *, *)      = null
leftPad("", 3, "z")      = "zzz"
leftPad("bat", 3, "yz")  = "bat"
leftPad("bat", 5, "yz")  = "yzbat"
leftPad("bat", 8, "yz")  = "yzyzybat"
leftPad("bat", 1, "yz")  = "bat"
leftPad("bat", -1, "yz") = "bat"
leftPad("bat", 5, null)  = "  bat"
leftPad("bat", 5, "")    = "  bat"
public class Main {
  public static void main(String[] argv) throws Exception {
    String str = "demo2s.com";
    int size = 20;
    System.out.println(leftPad(str, size, '*'));
  }/*from  w  w  w  .ja v a2s.  co m*/
  public static final String EMPTY = "";
  private static final int PAD_LIMIT = 8192;


  public static String leftPad(String str, int size) {
    return leftPad(str, size, ' ');
  }

  public static String leftPad(String str, int size, char padChar) {
    if (str == null) {
      return null;
    }
    int pads = size - str.length();
    if (pads <= 0) {
      return str; // returns original String when possible
    }
    if (pads > PAD_LIMIT) {
      return leftPad(str, size, String.valueOf(padChar));
    }
    return padding(pads, padChar).concat(str);
  }
  public static String leftPad(String str, int size, String padStr) {
    if (str == null) {
      return null;
    }
    if (isEmpty(padStr)) {
      padStr = " ";
    }
    int padLen = padStr.length();
    int strLen = str.length();
    int pads = size - strLen;
    if (pads <= 0) {
      return str; // returns original String when possible
    }
    if (padLen == 1 && pads <= PAD_LIMIT) {
      return leftPad(str, size, padStr.charAt(0));
    }

    if (pads == padLen) {
      return padStr.concat(str);
    } else if (pads < padLen) {
      return padStr.substring(0, pads).concat(str);
    } else {
      char[] padding = new char[pads];
      char[] padChars = padStr.toCharArray();
      for (int i = 0; i < pads; i++) {
        padding[i] = padChars[i % padLen];
      }
      return new String(padding).concat(str);
    }
  }

  /**
   * <p>
   * Returns padding using the specified delimiter repeated to a given length.
   * </p>
   *
   * <pre>
   * padding(0, 'e')  = ""
   * padding(3, 'e')  = "eee"
   * padding(-2, 'e') = IndexOutOfBoundsException
   * </pre>
   *
   * @param repeat
   *          number of times to repeat delim
   * @param padChar
   *          character to repeat
   * @return String with repeated character
   * @throws IndexOutOfBoundsException
   *           if <code>repeat &lt; 0</code>
   * @see #repeat(String, int)
   */
  private static String padding(int repeat, char padChar) throws IndexOutOfBoundsException {
    if (repeat < 0) {
      throw new IndexOutOfBoundsException("Cannot pad a negative amount: " + repeat);
    }
    final char[] buf = new char[repeat];
    for (int i = 0; i < buf.length; i++) {
      buf[i] = padChar;
    }
    return new String(buf);
  }
  public static boolean isEmpty(String str) {
    return str == null || str.length() == 0;
  }
}

//package com.demo2s;

public class Main {
    public static void main(String[] argv) throws Exception {
        String s = "demo2s.com";
        int len = 20;
        char pad_ch = 'a';
        System.out.println(padLeft(s, len, pad_ch));
    }/*from  ww  w . j  a va2 s . c o  m*/

    /**
     * Returns a string consisting of "s", plus enough copies of "pad_ch" on the
     * left hand side to make the length of "s" equal to or greater than len (if
     * "s" is already longer than "len", then "s" is returned).
     */
    public static String padLeft(String s, int len, char pad_ch) {
        if (s.length() >= len) {
            return s;
        } else {
            StringBuilder sb = new StringBuilder();
            int n = len - s.length();
            for (int i = 0; i < n; i++) {
                sb.append(pad_ch);
            }
            sb.append(s);
            return sb.toString();
        }
    }

}



PreviousNext

Related