commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (LANG-1300) Clarify or improve behaviour of int-based methods in StringUtils
Date Tue, 07 Mar 2017 14:39:38 GMT

    [ https://issues.apache.org/jira/browse/LANG-1300?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15899531#comment-15899531
] 

ASF GitHub Bot commented on LANG-1300:
--------------------------------------

Github user dmjones500 commented on the issue:

    https://github.com/apache/commons-lang/pull/251
  
    @chtompki  I'm far from a complexity expert, but if we keep a running tally of the current
index in terms of code points, I don't see us going from _O(n)_ to _O(n<sup>2</sup>)_.
Wouldn't _O(n<sup>2</sup>)_ imply that for each item in the input, we traverse
the entire input again?


> Clarify or improve behaviour of int-based methods in StringUtils
> ----------------------------------------------------------------
>
>                 Key: LANG-1300
>                 URL: https://issues.apache.org/jira/browse/LANG-1300
>             Project: Commons Lang
>          Issue Type: Improvement
>          Components: lang.*
>    Affects Versions: 3.5
>            Reporter: Duncan Jones
>            Priority: Minor
>             Fix For: Discussion
>
>
> The following methods use an {{int}} to represent a search character:
> {code:java}
> boolean contains(final CharSequence seq, final int searchChar)
> int indexOf(final CharSequence seq, final int searchChar)
> int indexOf(final CharSequence seq, final int searchChar, final int startPos)
> int lastIndexOf(final CharSequence seq, final int searchChar)
> int lastIndexOf(final CharSequence seq, final int searchChar, final int startPos)
> {code}
> When I see an {{int}} representing a character, I tend to assume the method can handle
supplementary characters. However, the current behaviour of these methods depends upon whether
the {{CharSequence}} is a {{String}} or not.
> {code:java}
> StringBuilder builder = new StringBuilder();
> builder.appendCodePoint(0x2070E);
> System.out.println(StringUtils.lastIndexOf(builder, 0x2070E)); // -1
> System.out.println(StringUtils.lastIndexOf(builder.toString(), 0x2070E)); // 0
> {code}
> The Javadoc for these methods are ambiguous on this point, stating:
> {quote}
> This method uses {{String.lastIndexOf(int)}} if possible.
> {quote}
> I think we should consider updating the {{CharSequenceUtils}} methods used by this class
to convert all {{CharSequence}} parameters to strings, enabling full code point support. The
docs could be updated to make this crystal clear.
> There is a question of whether this breaks backwards compatibility.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message