Android examples for java.lang:String Shorten
chops a String at a word boundary (whitespace) that occurs at the specified index in the argument or before.
/**//w w w .j a v a2 s . co m * $RCSfile: StringUtils.java,v $ $Revision: 1.11.2.2 $ $Date: 2001/01/16 * 06:06:07 $ Copyright (C) 2000 CoolServlets.com. All rights reserved. * =================================================================== The * Apache Software License, Version 1.1 Redistribution and use in source and * binary forms, with or without modification, are permitted provided that the * following conditions are met: 1. Redistributions of source code must retain * the above copyright notice, this list of conditions and the following * disclaimer. 2. Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. 3. The * end-user documentation included with the redistribution, if any, must include * the following acknowledgment: "This product includes software developed by * CoolServlets.com (http://www.coolservlets.com)." Alternately, this * acknowledgment may appear in the software itself, if and wherever such * third-party acknowledgments normally appear. 4. The names "Jive" and * "CoolServlets.com" must not be used to endorse or promote products derived * from this software without prior written permission. For written permission, * please contact webmaster@coolservlets.com. 5. Products derived from this * software may not be called "Jive", nor may "Jive" appear in their name, * without prior written permission of CoolServlets.com. THIS SOFTWARE IS * PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COOLSERVLETS.COM OR ITS * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ==================================================================== This * software consists of voluntary contributions made by many individuals on * behalf of CoolServlets.com. For more information on CoolServlets.com, please * see <http://www.coolservlets.com>. */ public class Main { /** * Intelligently chops a String at a word boundary (whitespace) that occurs at * the specified index in the argument or before. However, if there is a newline * character before <code>length</code>, the String will be chopped there. If no * newline or whitespace is found in <code>string</code> up to the index * <code>length</code>, the String will chopped at <code>length</code>. * <p> * For example, chopAtWord("This is a nice String", 10) will return "This is a" * which is the first word boundary less than or equal to 10 characters into the * original String. * * @param string * the String to chop. * @param length * the index in <code>string</code> to start looking for a whitespace * boundary at. * @return a substring of <code>string</code> whose length is less than or equal * to <code>length</code>, and that is chopped at whitespace. */ public static final String chopAtWord(String string, int length) { if (string == null) { return string; } char[] charArray = string.toCharArray(); int sLength = string.length(); if (length < sLength) { sLength = length; } // First check if there is a newline character before length; if so, // chop word there. for (int i = 0; i < sLength - 1; i++) { // Windows if (charArray[i] == '\r' && charArray[i + 1] == '\n') { return string.substring(0, i); } // Unix else if (charArray[i] == '\n') { return string.substring(0, i); } } // Also check boundary case of Unix newline if (charArray[sLength - 1] == '\n') { return string.substring(0, sLength - 1); } // Done checking for newline, now see if the total string is less than // the specified chop point. if (string.length() < length) { return string; } // No newline, so chop at the first whitespace. for (int i = length - 1; i > 0; i--) { if (charArray[i] == ' ') { return string.substring(0, i).trim(); } } // Did not find word boundary so return original String chopped at // specified length. return string.substring(0, length); } }