RFR: [15] JDK-8236030: Cleanup use of String.toCharArray

Jonathan Gibbons jonathan.gibbons at oracle.com
Mon Dec 16 22:47:26 UTC 2019


Updated webrev based on Ivan's suggestion to use one of stripLeading(), 
stripTrailing(), or strip() instead of the old methods, which are now 
removed

-- Jon

http://cr.openjdk.java.net/~jjg/8236030/webrev.01/



On 12/16/2019 01:33 PM, Jonathan Gibbons wrote:
> Ivan,
>
> Great suggestion, and sets up the possibility to  use strip() when 
> both leading and trailing whitespace should be removed.
>
> The only slight change in semantics would be that these methods work 
> in terms of code-points, not characters, and javadoc has not (yet?) 
> been adapted to use code-points throughout.
>
> -- Jon
>
>
> On 12/16/2019 01:23 PM, Ivan Gerasimov wrote:
>> Hello!
>>
>> Can String.stripLeading()/stripTrailing() methods be used instead, or 
>> is there a reason to avoid them?
>>
>> With kind regards,
>>
>> Ivan
>>
>>
>> On 12/16/19 1:10 PM, Jonathan Gibbons wrote:
>>> Please review a tiny change to eliminate a string copy into a 
>>> temporary character buffer when removing leading or trailing 
>>> whitespace from a string.
>>>
>>> The affected methods are called within the main code to translate 
>>> doc comments to HTML.  This is noreg-cleanup/no-reg-trivial, so no 
>>> new additional tests.
>>>
>>> Webrev below, but the patch is also included here:
>>>
>>> --- 
>>> a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java 
>>> Mon Dec 16 15:33:03 2019 -0500
>>> +++ 
>>> b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java 
>>> Mon Dec 16 13:07:18 2019 -0800
>>> @@ -1604,22 +1604,19 @@
>>>      }
>>>
>>>      private String removeTrailingWhitespace(String text) {
>>> -        char[] buf = text.toCharArray();
>>> -        for (int i = buf.length - 1; i > 0 ; i--) {
>>> -            if (!Character.isWhitespace(buf[i]))
>>> -                return text.substring(0, i + 1);
>>> +        int i = text.length() - 1;
>>> +        while (i >= 0 && Character.isWhitespace(text.charAt(i))) {
>>> +            i--;
>>>          }
>>> -        return text;
>>> +        return i == text.length() - 1 ? text : text.substring(0, i 
>>> + 1);
>>>      }
>>>
>>>      private String removeLeadingWhitespace(String text) {
>>> -        char[] buf = text.toCharArray();
>>> -        for (int i = 0; i < buf.length; i++) {
>>> -            if (!Character.isWhitespace(buf[i])) {
>>> -                return text.substring(i);
>>> -            }
>>> +        int i = 0;
>>> +        while (i < text.length() && 
>>> Character.isWhitespace(text.charAt(i))) {
>>> +            i++;
>>>          }
>>> -        return text;
>>> +        return i == 0 ? text : text.substring(i);
>>>      }
>>>
>>>      /**
>>>
>>>
>>> -- Jon
>>>
>>>
>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8236030
>>> Webrev: http://cr.openjdk.java.net/~jjg/8236030/webrev/
>>>
>



More information about the javadoc-dev mailing list