DMarlon Studio

Lección 4 · 4 de 20

Cadenas e interpolación · Dart

Trabaje con texto en Dart: unir cadenas con +, interpolación con $ y ${}, caracteres por posición, escapes, cadenas de varias líneas y el operador *.

Dart · Cadenas e interpolación en DMarlon Studio: el código del ejemplo y su salida en la terminal

Las cadenas se pueden unir con `+`, como en 'Hello, ' + name + '!', pero en Dart lo natural es la interpolación: 'Hello, $name from $city!' mete los valores dentro del texto sin cortarlo. Es más corto y se lee mejor.

`${...}` admite cualquier expresión: ${age + 1} hace una suma, ${name.length} lee la longitud de la cadena y ${city.toUpperCase()} llama a un método que la pasa a mayúsculas. Con un nombre suelto basta $; en cuanto hay un punto o una operación, hacen falta las llaves.

Una cadena es una secuencia de caracteres y `[índice]` da uno de ellos. El primero está en la posición 0 y el último, en name.length - 1: por eso name[0] es L y name[name.length - 1] es a.

La barra invertida escribe tal cual caracteres que tienen otro significado: \' es un apóstrofo dentro de comillas simples y \$ es un signo de dólar, no una interpolación. Dentro de comillas dobles, \" escribe comillas dobles.

Con tres comillas (''') la cadena puede ocupar varias líneas, y la interpolación sigue funcionando: así se compone el billete ticket. Por último, ***** repite una cadena: '=' * 20 dibuja una línea de veinte signos.

Código · main.dart

void main() {  String name = 'Lucia';  String city = "Seville";  // + joins strings; $name puts a variable inside the text.  print('Hello, ' + name + '!');  print('Hello, $name from $city!');  // ${...} takes any expression, not only a name.  int age = 29;  print('Next year $name will be ${age + 1}.');  print('$name has ${name.length} letters.');  print('Shouting: ${city.toUpperCase()}');  // [index] gives one character; the first one is at 0.  print('First letter: ${name[0]}, last: ${name[name.length - 1]}');  // A backslash writes quotes and dollars as they are.  print('It\'s \$12 for the ticket.');  print("She said: \"See you in $city\"");  // Three quotes allow text on several lines.  String ticket = '''Passenger: $nameAge: $ageTo: $city''';  print(ticket);  // * repeats a string.  print('=' * 20);}

Salida · dart run main.dart

Hello, Lucia!
Hello, Lucia from Seville!
Next year Lucia will be 30.
Lucia has 5 letters.
Shouting: SEVILLE
First letter: L, last: a
It's $12 for the ticket.
She said: "See you in Seville"
Passenger: Lucia
Age: 29
To: Seville
====================

Para recordar

  • '$name' y '${expresión}' meten valores en el texto.
  • Las llaves hacen falta si hay un punto o una operación.
  • texto[0] es el primer carácter; texto.length, cuántos hay.
  • \', \" y \$ escriben esos caracteres tal cual.
  • ''' permite cadenas de varias líneas.

Ejercicio

Cree las variables product, units y price y escriba con una sola cadena interpolada una línea como 3 x notebook = 7.50 euros, con el total calculado dentro de ${}.