Pad string
/* * Static String formatting and query routines. * Copyright (C) 2001-2005 Stephen Ostermiller * http://ostermiller.org/contact.pl?regarding=Java+Utilities * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * See COPYING.TXT for details. */ import java.util.HashMap; import java.util.regex.Pattern; /** * Utilities for String formatting, manipulation, and queries. * More information about this class is available from <a target="_top" href= * "http://ostermiller.org/utils/StringHelper.html">ostermiller.org</a>. * * @author Stephen Ostermiller http://ostermiller.org/contact.pl?regarding=Java+Utilities * @since ostermillerutils 1.00.00 */ public class StringHelper { /** * Pad the beginning of the given String with spaces until * the String is of the given length. * <p> * If a String is longer than the desired length, * it will not be truncated, however no padding * will be added. * * @param s String to be padded. * @param length desired length of result. * @return padded String. * @throws NullPointerException if s is null. * * @since ostermillerutils 1.00.00 */ public static String prepad(String s, int length){ return prepad(s, length, ' '); } /** * Pre-pend the given character to the String until * the result is the desired length. * <p> * If a String is longer than the desired length, * it will not be truncated, however no padding * will be added. * * @param s String to be padded. * @param length desired length of result. * @param c padding character. * @return padded String. * @throws NullPointerException if s is null. * * @since ostermillerutils 1.00.00 */ public static String prepad(String s, int length, char c){ int needed = length - s.length(); if (needed <= 0){ return s; } char padding[] = new char[needed]; java.util.Arrays.fill(padding, c); StringBuffer sb = new StringBuffer(length); sb.append(padding); sb.append(s); return sb.toString(); } /** * Pad the end of the given String with spaces until * the String is of the given length. * <p> * If a String is longer than the desired length, * it will not be truncated, however no padding * will be added. * * @param s String to be padded. * @param length desired length of result. * @return padded String. * @throws NullPointerException if s is null. * * @since ostermillerutils 1.00.00 */ public static String postpad(String s, int length){ return postpad(s, length, ' '); } /** * Append the given character to the String until * the result is the desired length. * <p> * If a String is longer than the desired length, * it will not be truncated, however no padding * will be added. * * @param s String to be padded. * @param length desired length of result. * @param c padding character. * @return padded String. * @throws NullPointerException if s is null. * * @since ostermillerutils 1.00.00 */ public static String postpad(String s, int length, char c){ int needed = length - s.length(); if (needed <= 0){ return s; } char padding[] = new char[needed]; java.util.Arrays.fill(padding, c); StringBuffer sb = new StringBuffer(length); sb.append(s); sb.append(padding); return sb.toString(); } /** * Pad the beginning and end of the given String with spaces until * the String is of the given length. The result is that the original * String is centered in the middle of the new string. * <p> * If the number of characters to pad is even, then the padding * will be split evenly between the beginning and end, otherwise, * the extra character will be added to the end. * <p> * If a String is longer than the desired length, * it will not be truncated, however no padding * will be added. * * @param s String to be padded. * @param length desired length of result. * @return padded String. * @throws NullPointerException if s is null. * * @since ostermillerutils 1.00.00 */ public static String midpad(String s, int length){ return midpad(s, length, ' '); } /** * Pad the beginning and end of the given String with the given character * until the result is the desired length. The result is that the original * String is centered in the middle of the new string. * <p> * If the number of characters to pad is even, then the padding * will be split evenly between the beginning and end, otherwise, * the extra character will be added to the end. * <p> * If a String is longer than the desired length, * it will not be truncated, however no padding * will be added. * * @param s String to be padded. * @param length desired length of result. * @param c padding character. * @return padded String. * @throws NullPointerException if s is null. * * @since ostermillerutils 1.00.00 */ public static String midpad(String s, int length, char c){ int needed = length - s.length(); if (needed <= 0){ return s; } int beginning = needed / 2; int end = beginning + needed % 2; char prepadding[] = new char[beginning]; java.util.Arrays.fill(prepadding, c); char postpadding[] = new char[end]; java.util.Arrays.fill(postpadding, c); StringBuffer sb = new StringBuffer(length); sb.append(prepadding); sb.append(s); sb.append(postpadding); return sb.toString(); } }