EMZETT.
Login

Kurz: String s = ‘Hallo Welt’; print(‘{s.length} {s[0]} {s.substring(0, 5)} {s.toUpperCase()} {s.toLowerCase()}'); print('{s.contains(‘Welt’)} {s.startsWith('Hal')} {s.indexOf(‘W’)} ${s.replaceAll(‘l’, ‘L’)}’).

Teil des Kurses Dart

Kapitel 2 von 8 im Kurs Dart. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

Zahlen und Strings

void main() {
  int a = 17, b = 5;
  print('${a + b} ${a - b} ${a * b} ${a / b} ${a ~/ b} ${a % b}');   // ~/ : Ganzzahldivision
  print('${-17 % 5} ${(-17).remainder(5)} ${2 * 3 + 4} ${a.isEven} ${a.isOdd}');
  double d = 3.14159;
  print('${d.round()} ${d.floor()} ${d.ceil()} ${d.toStringAsFixed(2)} ${d.truncate()}');
  print('${int.parse('42') + 1} ${double.parse('2.5')} ${int.tryParse('x')} ${42.toString()}');
  print('${10.compareTo(5)} ${(3.7).abs()} ${(-3).abs()} ${5.clamp(1, 3)} ${1e3} ${0.1 + 0.2}');
  print('${a.toDouble()} ${d.toInt()} ${255.toRadixString(16)} ${int.parse('ff', radix: 16)}');
 
  String s = 'Hallo Welt';
  print('${s.length} ${s[0]} ${s.substring(0, 5)} ${s.toUpperCase()} ${s.toLowerCase()}');
  print('${s.contains('Welt')} ${s.startsWith('Hal')} ${s.indexOf('W')} ${s.replaceAll('l', 'L')}');
  print('${s.split(' ')} ${'  trim '.trim()} ${'ab' * 3} ${'x'.padLeft(3, '0')} ${s.codeUnitAt(0)}');
  print('${s.split('').reversed.join()} ${'a,b,,c'.split(',')}');
  print('Zeile 1\nZeile 2\tTab \\ \$ ');
  print(r'Roh: $kein\n Ersatz');
  print('''Mehrzeiliger
String''');
  StringBuffer sb = StringBuffer();
  for (var i = 0; i < 3; i++) { sb.write('$i,'); }
  print(sb.toString());
}

Ausgabe:

22 12 85 3.4 3 2
3 -2 10 false true
3 3 4 3.14 3
43 2.5 null 42
1 3.7 3 3 1000.0 0.30000000000000004
17.0 3 ff 255
10 H Hallo HALLO WELT hallo welt
true true 6 HaLLo WeLt
[Hallo, Welt] trim ababab 00x 72
tleW ollaH [a, b, , c]
Zeile 1
Zeile 2	Tab \ $
Roh: $kein\n Ersatz
Mehrzeiliger
String
0,1,2,

Null-Sicherheit

Typen sind standardmäßig nicht-nullable. Mit ? erlaubst du null. Der Compiler prüft deinen Umgang damit.

String? gibName(bool vorhanden) => vorhanden ? 'Mia' : null;
 
void main() {
  String? n1 = gibName(true);
  String? n2 = gibName(false);
 
  print(n1?.length);                  // ?. : null statt Fehler
  print(n2?.length);
  print(n2 ?? 'Gast');                // ?? : Standardwert
  n2 ??= 'gesetzt';                   // ??= : nur zuweisen, wenn null
  print(n2);
  print(n1!.length);                  // ! : "ich weiß, dass es nicht null ist" (Laufzeitfehler möglich)
 
  if (n1 != null) {
    print(n1.toUpperCase());          // hier ist n1 automatisch nicht-null
  }
 
  List<int?> liste = [1, null, 3];
  print(liste.whereType<int>().toList());
  print(liste.map((e) => e ?? 0).toList());
  int? zahl = int.tryParse('abc');
  print(zahl == null ? 'keine Zahl' : 'Zahl $zahl');
 
  late String spaeter;                // wird später initialisiert
  spaeter = 'jetzt gesetzt';
  print(spaeter);
}

Ausgabe:

3
null
Gast
gesetzt
3
MIA
[1, 3]
[1, 0, 3]
keine Zahl
jetzt gesetzt

Verzweigungen und Schleifen

void main() {
  int punkte = 78;
  if (punkte >= 90) {
    print('sehr gut');
  } else if (punkte >= 75) {
    print('gut');
  } else {
    print('weiter üben');
  }
  print(punkte >= 50 ? 'bestanden' : 'durchgefallen');
 
  int tag = 3;
  switch (tag) {
    case 1:
      print('Montag');
    case 2 || 3 || 4:                 // Dart 3: kein break nötig, Muster mit ||
      print('Mitte der Woche');
    default:
      print('anderes');
  }
  String note = switch (punkte) {     // switch-Ausdruck (Dart 3)
    >= 90 => 'A',
    >= 75 => 'B',
    _ => 'C',
  };
  print(note);
 
  for (var i = 1; i <= 3; i++) { print('i=$i'); }
  for (final farbe in ['rot', 'grün', 'blau']) { print(farbe); }
  var n = 3;
  while (n > 0) { print(n); n--; }
  do { n++; } while (n < 3);
  print(n);
 
  outer:
  for (var i = 0; i < 3; i++) {
    for (var j = 0; j < 3; j++) {
      if (j == 2) continue outer;
      if (i == 2) break outer;
      print('$i$j');
    }
  }
  var wert = 5;
  assert(wert > 0, 'wert muss positiv sein');   // nur im Debug-Modus aktiv
}

Ausgabe:

gut
bestanden
Mitte der Woche
B
i=1
i=2
i=3
rot
grün
blau
3
2
1
3
00
01
10
11

Merke

  • Zahlen: int, double; / ergibt double, ~/ Ganzzahldivision
  • Strings: Methoden wie substring, split, replaceAll; Interpolation mit $
  • Null-Sicherheit: T?, ?., ??, ??=, !, late
  • if, switch (mit Mustern, Ausdrucksform), for, for-in, while

Übungsaufgabe

Schreibe FizzBuzz für 1 bis 30.

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: Einführung und erstes Programm

Weiter: Funktionen, Collections und Records

Alle Kapitel: Dart im Überblick