Java examples for java.lang:String Truncate
Abbreviates a String using ellipses.
/*//from ww w .jav a 2 s .c o m * Copyright 2013 Guidewire Software, Inc. */ /** * This class is based, in part, on org.apache.commons.lang.StringUtils and is intended * to break the dependency on that project. * * @author <a href="http://jakarta.apache.org/turbine/">Apache Jakarta Turbine</a> * @author <a href="mailto:jon@latchkey.com">Jon S. Stevens</a> * @author Daniel L. Rall * @author <a href="mailto:gcoladonato@yahoo.com">Greg Coladonato</a> * @author <a href="mailto:ed@apache.org">Ed Korthof</a> * @author <a href="mailto:rand_mcneely@yahoo.com">Rand McNeely</a> * @author Stephen Colebourne * @author <a href="mailto:fredrik@westermarck.com">Fredrik Westermarck</a> * @author Holger Krauth * @author <a href="mailto:alex@purpletech.com">Alexander Day Chaffee</a> * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a> * @author Arun Mammen Thomas * @author Gary Gregory * @author Phil Steitz * @author Al Chou * @author Michael Davey * @author Reuben Sivan * @author Chris Hyzer * Johnson */ //package com.java2s; public class Main { public static void main(String[] argv) { String str = "java2s.com"; int maxWidth = 42; System.out.println(abbreviate(str, maxWidth)); } /** * <p>Abbreviates a String using ellipses. This will turn * "Now is the time for all good men" into "Now is the time for..."</p> * * <p>Specifically: * <ul> * <li>If <code>str</code> is less than <code>maxWidth</code> characters * long, return it.</li> * <li>Else abbreviate it to <code>(substring(str, 0, max-3) + "...")</code>.</li> * <li>If <code>maxWidth</code> is less than <code>4</code>, throw an * <code>IllegalArgumentException</code>.</li> * <li>In no case will it return a String of length greater than * <code>maxWidth</code>.</li> * </ul> * </p> * * <pre> * abbreviate(null, *) = null * abbreviate("", 4) = "" * abbreviate("abcdefg", 6) = "abc..." * abbreviate("abcdefg", 7) = "abcdefg" * abbreviate("abcdefg", 8) = "abcdefg" * abbreviate("abcdefg", 4) = "a..." * abbreviate("abcdefg", 3) = IllegalArgumentException * </pre> * * @param str the String to check, may be null * @param maxWidth maximum length of result String, must be at least 4 * @return abbreviated String, <code>null</code> if null String input * @throws IllegalArgumentException if the width is too small * @since 2.0 */ public static String abbreviate(String str, int maxWidth) { return abbreviate(str, 0, maxWidth); } /** * <p>Abbreviates a String using ellipses. This will turn * "Now is the time for all good men" into "...is the time for..."</p> * * <p>Works like <code>abbreviate(String, int)</code>, but allows you to specify * a "left edge" offset. Note that this left edge is not necessarily going to * be the leftmost character in the result, or the first character following the * ellipses, but it will appear somewhere in the result. * * <p>In no case will it return a String of length greater than * <code>maxWidth</code>.</p> * * <pre> * abbreviate(null, *, *) = null * abbreviate("", 0, 4) = "" * abbreviate("abcdefghijklmno", -1, 10) = "abcdefg..." * abbreviate("abcdefghijklmno", 0, 10) = "abcdefg..." * abbreviate("abcdefghijklmno", 1, 10) = "abcdefg..." * abbreviate("abcdefghijklmno", 4, 10) = "abcdefg..." * abbreviate("abcdefghijklmno", 5, 10) = "...fghi..." * abbreviate("abcdefghijklmno", 6, 10) = "...ghij..." * abbreviate("abcdefghijklmno", 8, 10) = "...ijklmno" * abbreviate("abcdefghijklmno", 10, 10) = "...ijklmno" * abbreviate("abcdefghijklmno", 12, 10) = "...ijklmno" * abbreviate("abcdefghij", 0, 3) = IllegalArgumentException * abbreviate("abcdefghij", 5, 6) = IllegalArgumentException * </pre> * * @param str the String to check, may be null * @param offset left edge of source String * @param maxWidth maximum length of result String, must be at least 4 * @return abbreviated String, <code>null</code> if null String input * @throws IllegalArgumentException if the width is too small * @since 2.0 */ public static String abbreviate(String str, int offset, int maxWidth) { if (str == null) { return null; } if (maxWidth < 4) { throw new IllegalArgumentException( "Minimum abbreviation width is 4"); } if (str.length() <= maxWidth) { return str; } if (offset > str.length()) { offset = str.length(); } if ((str.length() - offset) < (maxWidth - 3)) { offset = str.length() - (maxWidth - 3); } if (offset <= 4) { return str.substring(0, maxWidth - 3) + "..."; } if (maxWidth < 7) { throw new IllegalArgumentException( "Minimum abbreviation width with offset is 7"); } if ((offset + (maxWidth - 3)) < str.length()) { return "..." + abbreviate(str.substring(offset), maxWidth - 3); } return "..." + str.substring(str.length() - (maxWidth - 3)); } }