Summary
String::align is no longer required with the withdrawal of JEP 326: Raw String Literals (Preview).
Problem
String::align was created specifically for incidental space removal in Raw String Literals.
Solution
Remove String::align
Specification
diff -r 4c539cb11633 src/java.base/share/classes/java/lang/String.java
--- a/src/java.base/share/classes/java/lang/String.java Wed Dec 19 18:21:38 2018 +0000
+++ b/src/java.base/share/classes/java/lang/String.java Wed Dec 19 15:17:53 2018 -0400
@@ -2869,116 +2869,6 @@
}
/**
- * Removes vertical and horizontal white space margins from around the
- * essential body of a multi-line string, while preserving relative
- * indentation.
- * <p>
- * This string is first conceptually separated into lines as if by
- * {@link String#lines()}.
- * <p>
- * Then, the <i>minimum indentation</i> (min) is determined as follows. For
- * each non-blank line (as defined by {@link String#isBlank()}), the
- * leading {@link Character#isWhitespace(int) white space} characters are
- * counted. The <i>min</i> value is the smallest of these counts.
- * <p>
- * For each non-blank line, <i>min</i> leading white space characters are
- * removed. Each white space character is treated as a single character. In
- * particular, the tab character {@code "\t"} (U+0009) is considered a
- * single character; it is not expanded.
- * <p>
- * Leading and trailing blank lines, if any, are removed. Trailing spaces are
- * preserved.
- * <p>
- * Each line is suffixed with a line feed character {@code "\n"} (U+000A).
- * <p>
- * Finally, the lines are concatenated into a single string and returned.
- *
- * @apiNote
- * This method's primary purpose is to shift a block of lines as far as
- * possible to the left, while preserving relative indentation. Lines
- * that were indented the least will thus have no leading white space.
- *
- * Example:
- * <blockquote><pre>
- * `
- * This is the first line
- * This is the second line
- * `.align();
- *
- * returns
- * This is the first line
- * This is the second line
- * </pre></blockquote>
- *
- * @return string with margins removed and line terminators normalized
- *
- * @see String#lines()
- * @see String#isBlank()
- * @see String#indent(int)
- * @see Character#isWhitespace(int)
- *
- * @since 12
- */
- public String align() {
- return align(0);
- }
-
- /**
- * Removes vertical and horizontal white space margins from around the
- * essential body of a multi-line string, while preserving relative
- * indentation and with optional indentation adjustment.
- * <p>
- * Invoking this method is equivalent to:
- * <blockquote>
- * {@code this.align().indent(n)}
- * </blockquote>
- *
- * @apiNote
- * Examples:
- * <blockquote><pre>
- * `
- * This is the first line
- * This is the second line
- * `.align(0);
- *
- * returns
- * This is the first line
- * This is the second line
- *
- *
- * `
- * This is the first line
- * This is the second line
- * `.align(4);
- * returns
- * This is the first line
- * This is the second line
- * </pre></blockquote>
- *
- * @param n number of leading white space characters
- * to add or remove
- *
- * @return string with margins removed, indentation adjusted and
- * line terminators normalized
- *
- * @see String#align()
- *
- * @since 12
- */
- public String align(int n) {
- if (isEmpty()) {
- return "";
- }
- int outdent = lines().filter(not(String::isBlank))
- .mapToInt(String::indexOfNonWhitespace)
- .min()
- .orElse(0);
- // overflow-conscious code
- int indent = n - outdent;
- return indent(indent > n ? Integer.MIN_VALUE : indent, true);
- }
-
- /**
* This method allows the application of a function to {@code this}
* string. The function should expect a single String argument
* and produce an {@code R} result.
- csr of
-
JDK-8215489 Remove String::align
- Resolved
- relates to
-
JDK-8196004 JEP 326: Raw String Literals (Preview)
- Closed
-
JDK-8200435 String::align, String::indent
- Closed