diff -r ed8a43d83fcc -r 92560438d306 src/java.base/share/classes/java/lang/String.java --- a/src/java.base/share/classes/java/lang/String.java Mon May 14 11:47:03 2018 +0200 +++ b/src/java.base/share/classes/java/lang/String.java Mon May 14 09:40:48 2018 -0300 @@ -2602,7 +2602,7 @@ * Returns a string whose value is this string, with all leading * and trailing space removed, where space is defined * as any character whose codepoint is less than or equal to - * {@code '\u005Cu0020'} (the space character). + * {@code 'U+0020'} (the space character). *

* If this {@code String} object represents an empty character * sequence, or the first and last characters of character sequence @@ -2637,6 +2637,98 @@ } /** + * Returns a string whose value is this string, with all leading + * and trailing {@link Character#isWhitespace(int) white space} + * removed. + *

+ * If this {@code String} object represents an empty string, + * or if all code points in this string are + * {@link Character#isWhitespace(int) white space}, then an empty string + * is returned. + *

+ * Otherwise, returns a substring of this string beginning with the first + * code point that is not a {@link Character#isWhitespace(int) white space} + * up to and including the last code point that is not a + * {@link Character#isWhitespace(int) white space}. + *

+ * This method may be used to strip + * {@link Character#isWhitespace(int) white space} from + * the beginning and end of a string. + * + * @return a string whose value is this string, with all leading + * and trailing white space removed + * + * @see Character#isWhitespace(int) + * + * @since 11 + */ + public String strip() { + String ret = isLatin1() ? StringLatin1.strip(value) + : StringUTF16.strip(value); + return ret == null ? this : ret; + } + + /** + * Returns a string whose value is this string, with all leading + * {@link Character#isWhitespace(int) white space} removed. + *

+ * If this {@code String} object represents an empty string, + * or if all code points in this string are + * {@link Character#isWhitespace(int) white space}, then an empty string + * is returned. + *

+ * Otherwise, returns a substring of this string beginning with the first + * code point that is not a {@link Character#isWhitespace(int) white space} + * up to to and including the last code point of this string. + *

+ * This method may be used to trim + * {@link Character#isWhitespace(int) white space} from + * the beginning of a string. + * + * @return a string whose value is this string, with all leading white + * space removed + * + * @see Character#isWhitespace(int) + * + * @since 11 + */ + public String stripLeading() { + String ret = isLatin1() ? StringLatin1.stripLeading(value) + : StringUTF16.stripLeading(value); + return ret == null ? this : ret; + } + + /** + * Returns a string whose value is this string, with all trailing + * {@link Character#isWhitespace(int) white space} removed. + *

+ * If this {@code String} object represents an empty string, + * or if all characters in this string are + * {@link Character#isWhitespace(int) white space}, then an empty string + * is returned. + *

+ * Otherwise, returns a substring of this string beginning with the first + * code point of this string up to and including the last code point + * that is not a {@link Character#isWhitespace(int) white space}. + *

+ * This method may be used to trim + * {@link Character#isWhitespace(int) white space} from + * the end of a string. + * + * @return a string whose value is this string, with all trailing white + * space removed + * + * @see Character#isWhitespace(int) + * + * @since 11 + */ + public String stripTrailing() { + String ret = isLatin1() ? StringLatin1.stripTrailing(value) + : StringUTF16.stripTrailing(value); + return ret == null ? this : ret; + } + + /** * This object (which is already a string!) is itself returned. * * @return the string itself.