Truncate text on a whitespace boundary (near a specified length) : String Strip « Data Type « Java






Truncate text on a whitespace boundary (near a specified length)

    
/**********************************************************************************
 *
 * Copyright (c) 2003, 2004 The Regents of the University of Michigan, Trustees of Indiana University,
 *                  Board of Trustees of the Leland Stanford, Jr., University, and The MIT Corporation
 *
 * Licensed under the Educational Community License Version 1.0 (the "License");
 * By obtaining, using and/or copying this Original Work, you agree that you have read,
 * understand, and will comply with the terms and conditions of the Educational Community License.
 * You may obtain a copy of the License at:
 *
 *      http://cvs.sakaiproject.org/licenses/license_1_0.html
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
 * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 *
 **********************************************************************************/

public class Utils {
  private static final int MINIMUM_SUPPORTED_LENGTH = 4;
  
  /**
   * Truncate text on a whitespace boundary (near a specified length). The
   * length of the resultant string will be in the range:<br>
   * <code>   (requested-length * .25) ~ (requested-length * 1.5) </code>
   * 
   * @param text
   *          Text to truncate
   * @param length
   *          Target length
   * @return Truncated text
   */
  public static String truncateAtWhitespace(String text, int length) {
    int desired, lowerBound, upperBound;
    /*
     * Make sure we have a reasonable length to work with
     */
    if (length < MINIMUM_SUPPORTED_LENGTH) {
      throw new IllegalArgumentException("Requested length too short (must be "
          + MINIMUM_SUPPORTED_LENGTH + " or greated)");
    }
    /*
     * No need to truncate - the original string "fits"
     */
    if (text.length() <= length) {
      return text;
    }
    /*
     * Try to find whitespace befor the requested maximum
     */
    lowerBound = length / 4;
    upperBound = length + (length / 2);

    for (int i = length - 1; i > lowerBound; i--) {
      if (Character.isWhitespace(text.charAt(i))) {
        return text.substring(0, i);
      }
    }
    /*
     * No whitespace - look beyond the desired maximum
     */
    for (int i = (length); i < upperBound; i++) {
      if (Character.isWhitespace(text.charAt(i))) {
        return text.substring(0, i);
      }
    }
    /*
     * No whitespace, just truncate the text at the requested length
     */
    return text.substring(0, length);
  }
}

   
    
    
    
  








Related examples in the same category

1.Strips any of a set of characters from the end of a String.
2.Strips any of a set of characters from the start and end of a String allowing the characters to be stripped to be controlled.
3.Strips any of a set of characters from the start and end of every String in an array.
4.Strips any of a set of characters from the start of a String.
5.Strips whitespace from the start and end of a String returning an empty String if null input.
6.Strips whitespace from the start and end of a String returning null if the String is empty ("") after the strip.
7.Strips whitespace from the start and end of a String.
8.Strips whitespace from the start and end of every String in an array.
9.Remove/collapse multiple newline characters.
10.Removes a substring only if it is at the begining of a source string, otherwise returns the source string.
11.Removes a substring only if it is at the end of a source string, otherwise returns the source string.
12.Gets the leftmost len characters of a String
13.Gets the rightmost len characters of a String.
14.Remove the leading and trailing quotes from str.
15.Remove the last character from a String.
16.Removes separator from the end of str if it's there, otherwise leave it alone.
17.Trim any of the characters
18.Strip Line Breaks
19.Removes newline, carriage return and tab characters from a string
20.Trim off trailing blanks but not leading blanks
21.Used to print out a string for error messages, chops is off at 60 chars for historical reasons.
22.Chop i characters off the end of a string.
23.Trim specified charcater from end and from of string
24.Trim specified charcater from end of string
25.Trim specified charcater from front of string
26.Trim specified token from both sides of the string
27.Trims several consecutive characters into one.
28.Trims the quotes.
29.Truncates large Strings showing a portion of the String's head and tail with the center cut out and replaced with '...'.
30.Truncate a String to the given length with no warnings or error raised if it is bigger.
31.Filters string
32.strip string