String.transform în Java

Aplică o funcție pe șir și returnează rezultatul; permite înlănțuirea propriilor funcții printre metodele String.

Sintaxă
<R> R transform(Function<? super String, ? extends R> f)

Ce face String.transform

s.transform(f) returnează f.apply(s). Pare puțin, dar permite să scrii prelucrări în lanț, de la stânga la dreapta, combinând metodele String cu metodele tale: text.strip().transform(Main::faraDiacritice).toUpperCase().

Rezultatul poate avea orice tip: un număr, o listă, un obiect. Funcția poate fi o referință la metodă sau o expresie lambda.

Parametri

Parametru Descriere
f Funcția care primește șirul și returnează rezultatul.

Ce returnează

Ce returnează funcția f.

Exemple

Exemplul 1: Lanț de prelucrări cu o metodă proprie

public class Main {
    static String slug(String s) {
        return s.toLowerCase().replace('ă', 'a').replace('â', 'a').replace('î', 'i')
                .replace('ș', 's').replace('ț', 't').replace(' ', '-');
    }

    public static void main(String[] args) {
        String titlu = "  Ghid de călătorie în Țara Hațegului  ";
        String rezultat = titlu.strip().transform(Main::slug).concat(".html");
        System.out.println(rezultat);
    }
}

Rezultat

ghid-de-calatorie-in-tara-hategului.html

Exemplul 2: Rezultat de alt tip

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        int total = "12,7,30".transform(s -> Arrays.stream(s.split(",")).mapToInt(Integer::parseInt).sum());
        System.out.println(total);
        List<String> cuvinte = "Ana are mere".transform(s -> List.of(s.split(" ")));
        System.out.println(cuvinte);
    }
}

Rezultat

49
[Ana, are, mere]

Greșeli frecvente

  • Folosești transform pentru o singură operație simplă: s.transform(String::length) e mai greu de citit decât s.length(). Merită doar în lanțuri.

Comenzi înrudite

  • String.toUpperCase: Returnează un șir nou cu toate literele transformate în majuscule (toUpperCase) sau minuscule (toLowerCase).
  • String.replace: Înlocuiește toate aparițiile unui caracter sau ale unui text cu altul; textul este căutat literal.
  • String.strip: Elimină spațiile de la începutul și sfârșitul șirului; stripLeading/stripTrailing doar dintr-o parte.