String.lines în Java

Împarte șirul în rânduri și le returnează ca Stream<String>, recunoscând \n, \r și \r\n.

Sintaxă
Stream<String> lines()

Ce face String.lines

lines() returnează un Stream<String> cu rândurile textului, fără caracterele de sfârșit de rând. Recunoaște toate cele trei terminații: \n (Linux, macOS), \r\n (Windows) și \r.

Un text care se termină cu rând nou nu produce un ultim rând gol. Pe stream poți folosi filter, map, count sau toList().

Ce returnează

Un Stream<String> cu rândurile, în ordine.

Exemple

Exemplul 1: Numărarea și filtrarea rândurilor

import java.util.List;

public class Main {
    public static void main(String[] args) {
        String note = "Ana 9\nIon 4\r\nMaria 10\n\nDan 7\n";
        System.out.println("rânduri: " + note.lines().count());
        List<String> admisi = note.lines()
                .filter(r -> !r.isBlank())
                .filter(r -> Integer.parseInt(r.split(" ")[1]) >= 5)
                .toList();
        System.out.println(admisi);
    }
}

Rezultat

rânduri: 5
[Ana 9, Maria 10, Dan 7]

Exemplul 2: Numerotarea rândurilor

public class Main {
    public static void main(String[] args) {
        String poezie = """
            Pe lângă plopii fără soț
            Adesea am trecut;
            Mă cunoșteau vecinii toți
            """;
        int[] nr = {0};
        poezie.lines().forEach(r -> System.out.println(++nr[0] + ": " + r));
    }
}

Rezultat

1: Pe lângă plopii fără soț
2: Adesea am trecut;
3: Mă cunoșteau vecinii toți

Greșeli frecvente

  • Folosești split("\n") pe un text din Windows și rândurile păstrează \r la final. lines() tratează corect toate terminațiile.
  • Refolosești același stream de două ori: un stream se poate parcurge o singură dată. Apelează din nou lines().

Comenzi înrudite

  • String.split: Împarte șirul în bucăți după un separator (expresie regulată) și returnează un array de String.
  • String.indent: indent(n) adaugă sau scoate n spații la începutul fiecărui rând; stripIndent() elimină indentarea comună.
  • String.strip: Elimină spațiile de la începutul și sfârșitul șirului; stripLeading/stripTrailing doar dintr-o parte.