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)