commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Duncan Jones (JIRA)" <j...@apache.org>
Subject [jira] [Created] (LANG-1300) Clarify or improve behaviour of int-based methods in StringUtils
Date Sun, 18 Dec 2016 12:01:58 GMT
Duncan Jones created LANG-1300:
----------------------------------

             Summary: 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.4#6332)

Mime
View raw message