You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Arturo Bernal (Jira)" <ji...@apache.org> on 2020/12/03 14:27:00 UTC
[jira] [Updated] (LANG-1619) refine StringUtils.abbreviate
[ https://issues.apache.org/jira/browse/LANG-1619?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Arturo Bernal updated LANG-1619:
--------------------------------
Description:
Avoid Multiple calls to calculate the length of the chain
[https://github.com/apache/commons-lang/pull/663]
{code:java}
public static String abbreviate(final String str, final String abbrevMarker, int offset, final int maxWidth) {
if (isNotEmpty(str) && EMPTY.equals(abbrevMarker) && maxWidth > 0) {
return substring(str, 0, maxWidth);
} else if (isAnyEmpty(str, abbrevMarker)) {
return str;
}
final int abbrevMarkerLength = abbrevMarker.length();
final int minAbbrevWidth = abbrevMarkerLength + 1;
final int minAbbrevWidthOffset = abbrevMarkerLength + abbrevMarkerLength + 1;
if (maxWidth < minAbbrevWidth) {
throw new IllegalArgumentException(String.format("Minimum abbreviation width is %d", minAbbrevWidth));
}
final int strLen = str.length();
if (strLen <= maxWidth) {
return str;
}
if (offset > strLen) {
offset = strLen;
}
if (strLen - offset < maxWidth - abbrevMarkerLength) {
offset = strLen - (maxWidth - abbrevMarkerLength);
}
if (offset <= abbrevMarkerLength+1) {
return str.substring(0, maxWidth - abbrevMarkerLength) + abbrevMarker;
}
if (maxWidth < minAbbrevWidthOffset) {
throw new IllegalArgumentException(String.format("Minimum abbreviation width with offset is %d", minAbbrevWidthOffset));
}
if (offset + maxWidth - abbrevMarkerLength < strLen) {
return abbrevMarker + abbreviate(str.substring(offset), abbrevMarker, maxWidth - abbrevMarkerLength);
}
return abbrevMarker + str.substring(strLen - (maxWidth - abbrevMarkerLength));
}
{code}
was:
Avoid Multiple calls to calculate the length of the chain
[https://github.com/apache/commons-lang/pull/663]
> refine StringUtils.abbreviate
> -----------------------------
>
> Key: LANG-1619
> URL: https://issues.apache.org/jira/browse/LANG-1619
> Project: Commons Lang
> Issue Type: Improvement
> Reporter: Arturo Bernal
> Priority: Major
> Labels: pull-request-available
> Time Spent: 40m
> Remaining Estimate: 0h
>
> Avoid Multiple calls to calculate the length of the chain
>
> [https://github.com/apache/commons-lang/pull/663]
> {code:java}
> public static String abbreviate(final String str, final String abbrevMarker, int offset, final int maxWidth) {
> if (isNotEmpty(str) && EMPTY.equals(abbrevMarker) && maxWidth > 0) {
> return substring(str, 0, maxWidth);
> } else if (isAnyEmpty(str, abbrevMarker)) {
> return str;
> }
> final int abbrevMarkerLength = abbrevMarker.length();
> final int minAbbrevWidth = abbrevMarkerLength + 1;
> final int minAbbrevWidthOffset = abbrevMarkerLength + abbrevMarkerLength + 1;
> if (maxWidth < minAbbrevWidth) {
> throw new IllegalArgumentException(String.format("Minimum abbreviation width is %d", minAbbrevWidth));
> }
> final int strLen = str.length();
> if (strLen <= maxWidth) {
> return str;
> }
> if (offset > strLen) {
> offset = strLen;
> }
> if (strLen - offset < maxWidth - abbrevMarkerLength) {
> offset = strLen - (maxWidth - abbrevMarkerLength);
> }
> if (offset <= abbrevMarkerLength+1) {
> return str.substring(0, maxWidth - abbrevMarkerLength) + abbrevMarker;
> }
> if (maxWidth < minAbbrevWidthOffset) {
> throw new IllegalArgumentException(String.format("Minimum abbreviation width with offset is %d", minAbbrevWidthOffset));
> }
> if (offset + maxWidth - abbrevMarkerLength < strLen) {
> return abbrevMarker + abbreviate(str.substring(offset), abbrevMarker, maxWidth - abbrevMarkerLength);
> }
> return abbrevMarker + str.substring(strLen - (maxWidth - abbrevMarkerLength));
> }
> {code}
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)