/** * Truncate the supplied string to be no more than the specified length. This method returns an * empty string if the supplied object is null. * * @param obj the object from which the string is to be obtained using {@link Object#toString()}. * @param maxLength the maximum length of the string being returned * @param suffix the suffix that should be added to the content if the string must be truncated, * or null if the default suffix of "..." should be used * @return the supplied string if no longer than the maximum length, or the supplied string * truncated to be no longer than the maximum length (including the suffix) * @throws IllegalArgumentException if the maximum length is negative */ public static String truncate(Object obj, int maxLength, String suffix) { CheckArg.isNonNegative(maxLength, "maxLength"); if (obj == null || maxLength == 0) { return ""; } String str = obj.toString(); if (str.length() <= maxLength) return str; if (suffix == null) suffix = "..."; int maxNumChars = maxLength - suffix.length(); if (maxNumChars < 0) { // Then the max length is actually shorter than the suffix ... str = suffix.substring(0, maxLength); } else if (str.length() > maxNumChars) { str = str.substring(0, maxNumChars) + suffix; } return str; }