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 < 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(); } } }