Ce face LineSplitter
LineSplitter împarte textul în rânduri și recunoaște toate felurile de sfârșit de rând: \n (Linux, macOS), \r\n (Windows) și \r. Caracterele de sfârșit de rând nu apar în rezultat.
Metoda statică LineSplitter.split(text) returnează un Iterable<String>. Dacă textul se termină cu un sfârșit de rând, nu apare un ultim rând gol (spre deosebire de text.split('\n')).
Ca obiect, const LineSplitter() este un convertor: stream.transform(utf8.decoder).transform(const LineSplitter()) transformă un flux de octeți într-un flux de rânduri, la citirea fișierelor sau a ieșirii unui proces.
Parametri
| Parametru | Descriere |
|---|---|
lines |
Textul de împărțit. |
start, end |
Opțional. Partea din text care se împarte. |
Ce returnează
split: rândurile, ca Iterable<String>.
Exemple
Exemplul 1: Diferența față de split(‘\n’)
import 'dart:convert';
void main() {
const text = 'Ana\r\nIon\nMaria\n';
print(text.split('\n'));
print(LineSplitter.split(text).toList());
print(LineSplitter.split(text).length);
}
Rezultat
[Ana
, Ion, Maria, ]
[Ana, Ion, Maria]
3
Exemplul 2: Numărarea rândurilor necompletate
import 'dart:convert';
void main() {
const lista = '''lapte
pâine
ouă
''';
final produse = LineSplitter.split(lista).where((r) => r.trim().isNotEmpty).toList();
print('${produse.length} produse: ${produse.join(', ')}');
}
Rezultat
3 produse: lapte, pâine, ouă
Exemplul 3: Rânduri dintr-un flux
import 'dart:convert';
Future<void> main() async {
final flux = Stream.fromIterable(['Iași;3', '00000\nCluj;', '400000\n']);
final randuri = await flux.transform(const LineSplitter()).toList();
for (final r in randuri) {
final [oras, locuitori] = r.split(';');
print('$oras are $locuitori locuitori');
}
}
Rezultat
Iași are 300000 locuitori
Cluj are 400000 locuitori
Greșeli frecvente
- Folosești
text.split('\n')pe un fișier venit din Windows: fiecare rând păstrează un\rla final, invizibil la afișare dar prezent la comparații. - Scrii
LineSplitter().split(text).spliteste statică:LineSplitter.split(text).
Comenzi înrudite
utf8.decoder: Convertoarele din spatele lui utf8: decoder transformă fluxuri de octeți în text, encoder face invers.File.readAsLines: Citește un fișier text și returnează lista rândurilor, fără caracterele de sfârșit de rând.stdin: stdin este intrarea standard a programului: ce scrie utilizatorul la tastatură sau ce primește programul printr-un pipe.