Aggiornamenti API delle stringhe in Java 12

1. Introduzione

Java 12 ha aggiunto un paio di API utili alla classe String . In questo tutorial, esploreremo queste nuove API con esempi.

2. trattino ()

Il metodo indent () regola il rientro di ogni riga della stringa in base all'argomento passato ad essa.

Quando indent () viene chiamato su una stringa, vengono eseguite le seguenti azioni:

  1. La stringa è concettualmente suddivisa in righe utilizzando lines () . lines () è l'API String introdotta in Java 11.
  2. Ogni linea è quindi regolata in base alla int argomento n passati ad esso e poi suffisso con un avanzamento riga “\ n”.
    1. Se n > 0, vengono inseriti n spazi all'inizio di ogni riga.
    2. Se n <0, vengono rimossi fino a n caratteri di spazio vuoto dall'inizio di ogni riga. Nel caso in cui una determinata riga non contenga spazio bianco sufficiente, tutti i caratteri dello spazio bianco iniziale vengono rimossi.
    3. Se n == 0, la linea rimane invariata. Tuttavia, i terminatori di riga sono ancora normalizzati.
  3. Le righe risultanti vengono quindi concatenate e restituite.

Per esempio:

@Test public void whenPositiveArgument_thenReturnIndentedString() { String multilineStr = "This is\na multiline\nstring."; String outputStr = " This is\n a multiline\n string.\n"; String postIndent = multilineStr.indent(3); assertThat(postIndent, equalTo(outputStr)); }

Possiamo anche passare un int negativo per ridurre il rientro della stringa. Per esempio:

@Test public void whenNegativeArgument_thenReturnReducedIndentedString() { String multilineStr = " This is\n a multiline\n string."; String outputStr = " This is\n a multiline\n string.\n"; String postIndent = multilineStr.indent(-2); assertThat(postIndent, equalTo(outputStr)); }

3. transform ()

Possiamo applicare una funzione a questa stringa usando il metodo transform () . La funzione dovrebbe aspettarsi un singolo argomento String e produrre un risultato:

@Test public void whenTransformUsingLamda_thenReturnTransformedString() { String result = "hello".transform(input -> input + " world!"); assertThat(result, equalTo("hello world!")); }

Non è necessario che l'output sia una stringa. Per esempio:

@Test public void whenTransformUsingParseInt_thenReturnInt() { int result = "42".transform(Integer::parseInt); assertThat(result, equalTo(42)); }

4. Conclusione

In questo articolo, abbiamo esplorato le nuove API String in Java 12. Come al solito, gli snippet di codice possono essere trovati su GitHub.