Ce face String.filter
text.filter { it.isDigit() } parcurge textul caracter cu caracter și returnează un String nou cu doar caracterele pentru care condiția este adevărată. Este o metodă simplă de a scoate cifrele dintr-un număr de telefon sau literele dintr-un cod.
count { ... } nu construiește un text nou, ci returnează câte caractere respectă condiția. Fără condiție, count() este egal cu length. Există și filterNot, care păstrează caracterele care nu respectă condiția.
Parametri
| Parametru | Descriere |
|---|---|
predicate |
Condiția verificată pentru fiecare caracter (it este un Char). |
Ce returnează
filter: un String. count: un Int.
Exemple
Exemplul 1: Doar cifrele dintr-un număr de telefon
Spațiile, cratimele și parantezele sunt eliminate; rămân doar cifrele.
fun main() {
val telefon = "(0232) 21-45-67"
val cifre = telefon.filter { it.isDigit() }
println(cifre)
println("Are ${cifre.length} cifre")
}
Rezultat
0232214567
Are 10 cifre
Exemplul 2: Numărarea vocalelor
count cu condiție numără vocalele, inclusiv cele cu diacritice.
fun main() {
val text = "Învățătoarea din Bistrița"
val vocale = "aăâeiîouAĂÂEIÎOU"
println("Vocale: ${text.count { it in vocale }}")
println("Spații: ${text.count { it == ' ' }}")
println("Total caractere: ${text.count()}")
}
Rezultat
Vocale: 11
Spații: 2
Total caractere: 25
Exemplul 3: filterNot pentru a scoate semnele de punctuație
Păstrăm tot în afară de caracterele din setul de semne.
fun main() {
val propozitie = "Bună, Ana! Ce mai faci?"
val semne = setOf(',', '!', '?', '.')
println(propozitie.filterNot { it in semne })
}
Rezultat
Bună Ana Ce mai faci
Greșeli frecvente
- Aștepți o listă de caractere de la
filter. Pe un String, rezultatul este tot un String; pentru listă foloseștetoList()după. - Scrii
text.filter { it == "a" }.iteste unChar; compară cu'a'.
Comenzi înrudite
String.all: all verifică dacă toate caracterele respectă o condiție, any dacă măcar unul o respectă.Char.isDigit: Verifică tipul unui caracter: cifră (isDigit), literă (isLetter), literă sau cifră, spațiu alb (isWhitespace).Iterable.count: Numără elementele colecției sau doar pe cele care îndeplinesc o condiție.String.replace: Înlocuiește toate aparițiile unui text sau caracter cu altul și returnează textul nou.