mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 14:54:52 +02:00
8215489: Remove String::align
Reviewed-by: vromero, sundar
This commit is contained in:
parent
c7d085fa64
commit
eeca4576d2
2 changed files with 4 additions and 198 deletions
|
@ -2868,116 +2868,6 @@ public final class String
|
|||
: StringUTF16.lastIndexOfNonWhitespace(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue