Ce face String
Un String este un text: 'Ana', "Iași". Poți folosi ghilimele simple sau duble, iar pentru text pe mai multe rânduri trei ghilimele ('''...'''). Valorile se pun în text cu interpolare: 'Salut, $nume' sau 'Total: ${pret * 2} lei'. Un text cu r în față (r'C:\date') este „brut”: \ nu mai are sens special.
Textele sunt imutabile: metode ca toUpperCase sau trim nu schimbă textul original, ci returnează unul nou. Operatorul + lipește două texte ('Ana' + ' Pop'), iar * repetă un text de un număr de ori ('-' * 10).
Două texte se compară cu == după conținut. Pentru ordine alfabetică (simplă, după codurile caracterelor) folosește compareTo. Ca să construiești un text din multe bucăți, într-o buclă, folosește StringBuffer în loc de + repetat.
Parametri
| Parametru | Descriere |
|---|---|
other |
La +: textul lipit la final. |
times |
La *: de câte ori se repetă textul (0 sau mai mult). |
Ce returnează
+ și * returnează un String nou.
Exemple
Exemplul 1: Crearea și lipirea textelor
Textele alăturate fără operator ('Bună ' 'ziua') se lipesc automat la compilare. Interpolarea este de obicei mai clară decât +.
void main() {
var prenume = 'Ana';
var nume = "Popescu";
var complet = prenume + ' ' + nume;
print(complet);
print('Salut, $prenume! Ai ${prenume.length} litere în prenume.');
print('Bună ' 'ziua');
var adresa = '''Str. Lăpușneanu 12
Iași''';
print(adresa);
print(r'Fișierul este în C:\date\note.txt');
print('Ana' == 'An' + 'a');
}
Rezultat
Ana Popescu
Salut, Ana! Ai 3 litere în prenume.
Bună ziua
Str. Lăpușneanu 12
Iași
Fișierul este în C:\date\note.txt
true
Exemplul 2: Repetarea unui text cu *
* este util pentru linii de separare și bare simple de progres.
void main() {
print('=' * 20);
var note = {'Ana': 9, 'Mihai': 6, 'Ioana': 10};
note.forEach((nume, nota) {
print('${nume.padRight(6)} ${'#' * nota} $nota');
});
print('=' * 20);
print('ha' * 3);
print('x' * 0 == '');
}
Rezultat
====================
Ana ######### 9
Mihai ###### 6
Ioana ########## 10
====================
hahaha
true
Greșeli frecvente
- Crezi că
nume.toUpperCase()schimbă variabila. Textul este imutabil: scrienume = nume.toUpperCase();. - Lipești un număr cu
+:'Nota: ' + 9nu compilează. Folosește interpolarea:'Nota: $nota'. - Pui
*invers:3 * '-'nu compilează. Textul trebuie să fie în stânga:'-' * 3.
Comenzi înrudite
String.length: length dă numărul de unități UTF-16 ale textului; isEmpty și isNotEmpty spun dacă textul este gol.StringBuffer: Construiește un text din multe bucăți, eficient; la final toString() dă textul, iar clear() îl golește.String.substring: substring extrage o bucată din text între două poziții; operatorul [] dă caracterul de la o poziție.String.toUpperCase: Returnează textul transformat în litere mari (toUpperCase) sau mici (toLowerCase).