Fix StringUtilities.capitalise throwing on leading whitespace#7561
Open
dsavy4 wants to merge 1 commit into
Open
Fix StringUtilities.capitalise throwing on leading whitespace#7561dsavy4 wants to merge 1 commit into
dsavy4 wants to merge 1 commit into
Conversation
split("\\s+") keeps an empty leading token when the input starts with
whitespace, and the per-word mapper then calls charAt(0) and substring(1)
on that empty token, throwing StringIndexOutOfBoundsException. For example
capitalise(" hello") threw instead of returning "Hello".
Filter out empty tokens before mapping. Whitespace-only input now returns
an empty string, matching the intent noted in the existing tests. Added
tests for leading whitespace and whitespace-only input.
|
|
Author
Signed and accepted |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
StringUtilities.capitalisethrowsStringIndexOutOfBoundsExceptionwhen the input has leading whitespace.words.split("\\s+")keeps an empty leading token when the string starts with whitespace (Java only trims trailing empty tokens). The per-word mapper then callscharAt(0)andsubstring(1)on that empty token and throws.Fix
Filter out empty tokens before mapping:
Whitespace-only input now returns
"", which matches the intent already noted in the existing test comments (" " => ""). All existing cases are unchanged, since none of them start with whitespace.Tests
Added
leadingWhitespaceandonlyWhitespacecases toStringUtilities_capitaliseTest. Verified the fix independently with the JDK (old throws, fixed returnsHello/Hello World/"", existing cases unchanged).