You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Gary D. Gregory (Jira)" <ji...@apache.org> on 2021/12/30 22:33:00 UTC
[jira] [Commented] (LANG-1679) StringUtils.unwrap() may be implemented faster
[ https://issues.apache.org/jira/browse/LANG-1679?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17467011#comment-17467011 ]
Gary D. Gregory commented on LANG-1679:
---------------------------------------
HI [~clover]
That's the kind of work that can be done in a PR focused on this one change. To back up the performance claim, you'll have to include a JMH test in the PR.
> StringUtils.unwrap() may be implemented faster
> ----------------------------------------------
>
> Key: LANG-1679
> URL: https://issues.apache.org/jira/browse/LANG-1679
> Project: Commons Lang
> Issue Type: Improvement
> Reporter: clover
> Priority: Minor
>
> 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)) {
> {color:#de350b} // When we come here, startIndex must be 0. Thus, startIndex is redundant.{color}
> final int startIndex = str.indexOf(wrapToken);
> {color:#ff0000} final int endIndex = str.lastIndexOf(wrapToken);{color}
> final int wrapLength = wrapToken.length();
> {color:#172b4d} {color:#de350b}// (startIndex != -1 && endIndex != -1) is always true{color}{color}
> {color:#ff0000} if (startIndex != -1 && endIndex != -1) {{color}
> {color:#ff0000} return str.substring(startIndex + wrapLength, endIndex);{color}
> {color:#ff0000} }{color}
> }
> 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)) {
> {color:#ff0000} return str.substring(wrapToken.length(), str.lastIndexOf(wrapToken));{color}
> {color:#ff0000} }{color}
> }
> return str;
> }
--
This message was sent by Atlassian Jira
(v8.20.1#820001)