Java String pad right

Introduction

Right pad a String with spaces (' ').

The String is padded to the size of size.

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

Right pad a String with a specified character.

The String is padded to the size of size.

rightPad(null, *, *)     = null
rightPad("", 3, 'z')     = "zzz"
rightPad("bat", 3, 'z')  = "bat"
rightPad("bat", 5, 'z')  = "batzz"
rightPad("bat", 1, 'z')  = "bat"
rightPad("bat", -1, 'z') = "bat"

Right pad a String with a specified String.

The String is padded to the size of size.

rightPad(null, *, *)      = null
rightPad("", 3, "z")      = "zzz"
rightPad("bat", 3, "yz")  = "bat"
rightPad("bat", 5, "yz")  = "batyz"
rightPad("bat", 8, "yz")  = "batyzyzy"
rightPad("bat", 1, "yz")  = "bat"
rightPad("bat", -1, "yz") = "bat"
rightPad("bat", 5, null)  = "bat  "
rightPad("bat", 5, "")    = "bat  "
public class Main {
  public static void main(String[] argv) throws Exception {
    String str = "demo2s.com";
    int size = 20;
    System.out.println(rightPad(str, size, '*'));
  }//from www . j  a v a  2  s  .  c o m

  private static final int PAD_LIMIT = 8192;


  public static String rightPad(String str, int size) {
    return rightPad(str, size, ' ');
  }
  public static String rightPad(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 rightPad(str, size, String.valueOf(padChar));
    }
    return str.concat(padding(pads, padChar));
  }
  public static String rightPad(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 rightPad(str, size, padStr.charAt(0));
    }

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

  /**
   * <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>
   *
   * <p>
   * Note: this method doesn't not support padding with
   * <a href="http://www.unicode.org/glossary/#supplementary_character">Unicode
   * Supplementary Characters</a> as they require a pair of <code>char</code>s to
   * be represented. If you are needing to support full I18N of your applications
   * consider using {@link #repeat(String, int)} instead.
   * </p>
   *
   * @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;
  }
}


/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

//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(padRight(s, len, pad_ch));
    }/*  ww  w .  j a  v a 2s  .  co  m*/

    /**
     * Returns a string consisting of "s", plus enough copies of "pad_ch" on the
     * right 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 padRight(String s, int len, char pad_ch) {
        if (s.length() >= len) {
            return s;
        } else {
            StringBuilder sb = new StringBuilder();
            int n = len - s.length();
            sb.append(s);
            for (int i = 0; i < n; i++) {
                sb.append(pad_ch);
            }
            return sb.toString();
        }
    }

}



PreviousNext

Related