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
transformpentru o singură operație simplă:s.transform(String::length)e mai greu de citit decâts.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.