|
CSR :
|
|
|
Relates :
|
|
|
Relates :
|
Summary
-------
This feature introduces a new String instance method to translate escape sequences, such as `\n`, `\t`, `\'`, `\"`, and `\\`, as described in full in section 3.10.6 of the The Java™ Language Specification.
This will be a [preview language feature](http://openjdk.java.net/jeps/12) as part of [Text Blocks](https://bugs.openjdk.java.net/browse/JDK-8222530)
Problem
-------
The specification of Text Blocks requires that the Java compiler defer processing of escape sequences until after line terminator translation and re-indentation. To provide consistency with the Java Language Specification and long term maintainability, escape translation will be provided by a library method.
Solution
--------
The solution is to provide a new String instance method which adheres to Java™ Language Specification section 3.10.7. This method takes the receiver String and replaces escape sequences with character equivalents. Attempts to translate strings containing invalid escapes sequences raise an IllegalArgumentException.
Specification
-------------
```
/**
* Returns a string whose value is this string, with escape sequences
* translated as if in a string literal.
* <p>
* Escape sequences are translated as follows;
* <table class="plain">
* <caption style="display:none">Translation</caption>
* <thead>
* <tr>
* <th scope="col">Escape</th>
* <th scope="col">Name</th>
* <th scope="col">Translation</th>
* </tr>
* </thead>
* <tr>
* <td>{@code \u005Cb}</td>
* <td>backspace</td>
* <td>{@code U+0008}</td>
* </tr>
* <tr>
* <td>{@code \u005Ct}</td>
* <td>horizontal tab</td>
* <td>{@code U+0009}</td>
* </tr>
* <tr>
* <td>{@code \u005Cn}</td>
* <td>line feed</td>
* <td>{@code U+000A}</td>
* </tr>
* <tr>
* <td>{@code \u005Cf}</td>
* <td>form feed</td>
* <td>{@code U+000C}</td>
* </tr>
* <tr>
* <td>{@code \u005Cr}</td>
* <td>carriage return</td>
* <td>{@code U+000D}</td>
* </tr>
* <tr>
* <td>{@code \u005C"}</td>
* <td>double quote</td>
* <td>{@code U+0022}</td>
* </tr>
* <tr>
* <td>{@code \u005C'}</td>
* <td>single quote</td>
* <td>{@code U+0027}</td>
* </tr>
* <tr>
* <td>{@code \u005C\u005C}</td>
* <td>backslash</td>
* <td>{@code U+005C}</td>
* </tr>
* <tr>
* <td>{@code \u005C0 - \u005C377}</td>
* <td>octal escape</td>
* <td>code point equivalents</td>
* </tr>
* </table>
*
* @implNote
* This method does <em>not</em> translate Unicode escapes such as "{@code \u005cu2022}".
* Unicode escapes are translated by the Java compiler when reading input characters and
* are not part of the string literal specification.
*
* @throws IllegalArgumentException when an escape sequence is malformed.
*
* @return String with escape sequences translated.
*
* @jls 3.10.7 Escape Sequences
*
* @since 13
*
* @deprecated This method is associated with text blocks, a preview language feature.
* Text blocks and/or this method may be changed or removed in a future release.
*/
@Deprecated(forRemoval=true, since="13")
public String translateEscapes() {
```
|