Uploaded image for project: 'Commons Lang'
  1. Commons Lang
  2. LANG-1679

StringUtils.unwrap() may be implemented faster

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • None
    • 3.13.0
    • None
    • None

    Description

      public static String unwrap(final String str, final String wrapToken) {
              if (isEmpty(str) || isEmpty(wrapToken) || str.length() < 2 * wrapToken.length())

      {             return str;         }

              if (startsWith(str, wrapToken) && endsWith(str, wrapToken)) {

                  // When we come here, startIndex must be 0. Thus, startIndex is redundant.
                  final int startIndex = str.indexOf(wrapToken);
                  final int endIndex = str.lastIndexOf(wrapToken);
                  final int wrapLength = wrapToken.length();

                 // (startIndex != -1 && endIndex != -1) is always true

                  if (startIndex != -1 && endIndex != -1) {

                      return str.substring(startIndex + wrapLength, endIndex);
                  }
              }

              return str;
          }

       

      As commented above, unwrap() could be improved:

      public static String unwrap(final String str, final String wrapToken)

      {         if (isEmpty(str) || isEmpty(wrapToken) || str.length() < 2 * wrapToken.length()) \{             return str;         }

              if (startsWith(str, wrapToken) && endsWith(str, wrapToken)) {
                      return str.substring(wrapToken.length(), str.lastIndexOf(wrapToken));
                  }
              }

              return str;
          }

      Attachments

        Activity

          People

            Unassigned Unassigned
            clover clover
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0h
                0h
                Logged:
                Time Spent - 20m
                20m