Skip to content

Commit

Permalink
Added WordUtils.abbreviate from commons lang
Browse files Browse the repository at this point in the history
  • Loading branch information
ameyjadiye committed May 3, 2017
1 parent 0b6a285 commit 8b42549
Showing 1 changed file with 68 additions and 1 deletion.
69 changes: 68 additions & 1 deletion src/main/java/org/apache/commons/text/WordUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.lang3.StringUtils;

/**
* <p>Operations on Strings that contain words.</p>
*
Expand Down Expand Up @@ -738,4 +740,69 @@ private static boolean isDelimiter(final char ch, final char[] delimiters) {
return false;
}

}
//-----------------------------------------------------------------------
/**
* Abbreviates a string nicely.
*
* This method searches for the first space after the lower limit and abbreviates
* the String there. It will also append any String passed as a parameter
* to the end of the String. The upper limit can be specified to forcibly
* abbreviate a String.
*
* @param str the string to be abbreviated. If null is passed, null is returned.
* If the empty String is passed, the empty string is returned.
* @param lower the lower limit.
* @param upper the upper limit; specify -1 if no limit is desired.
* If the upper limit is lower than the lower limit, it will be
* adjusted to be the same as the lower limit.
* @param appendToEnd String to be appended to the end of the abbreviated string.
* This is appended ONLY if the string was indeed abbreviated.
* The append does not count towards the lower or upper limits.
* @return the abbreviated String.
* @since 2.4
*/
public static String abbreviate(String str, int lower, int upper, String appendToEnd) {
if (str == null) {
return null;
}

if (str.length() == 0) {
return StringUtils.EMPTY;
}

// if the lower value is greater than the length of the string,
// set to the length of the string
if (lower > str.length()) {
lower = str.length();
}

// if the upper value is -1 (i.e. no limit) or is greater
// than the length of the string, set to the length of the string
if (upper == -1 || upper > str.length()) {
upper = str.length();
}

// if upper is less than lower, raise it to lower
if (upper < lower) {
upper = lower;
}

final StringBuffer result = new StringBuffer();
final int index = StringUtils.indexOf(str, " ", lower);
if (index == -1) {
result.append(str.substring(0, upper));
// only if abbreviation has occured do we append the appendToEnd value
if (upper != str.length()) {
result.append(StringUtils.defaultString(appendToEnd));
}
} else if (index > upper) {
result.append(str.substring(0, upper));
result.append(StringUtils.defaultString(appendToEnd));
} else {
result.append(str.substring(0, index));
result.append(StringUtils.defaultString(appendToEnd));
}

return result.toString();
}
}

0 comments on commit 8b42549

Please sign in to comment.