Lección 16 · 16 de 20
Métodos de las cadenas · Dart
Maneje texto en Dart con trim, toUpperCase, contains, indexOf, replaceAll, substring, split, join, padLeft y padRight.

`trim()` quita los espacios del principio y del final; los corchetes de '[$text]' dejan ver que ya no queda ninguno. `toUpperCase()` pasa el texto a mayúsculas y toLowerCase(), a minúsculas.
Para buscar, `contains()` dice si el texto aparece, `startsWith()` si la cadena empieza por él (y endsWith(), si acaba) e `indexOf()` da la posición de la primera aparición; `lastIndexOf()`, la de la última. Como en las listas, se cuenta desde 0.
`replaceAll('Dart', 'Flutter')` cambia todas las apariciones de un texto por otro. `substring(0, 4)` corta un trozo: desde la posición 0 hasta la 4, sin incluirla, que es la palabra Dart.
`split(' ')` parte la cadena por los espacios y da una lista de palabras; `join('_')` hace lo contrario y une una lista con el separador que se le dé. `padRight(12, '.')` rellena con puntos por la derecha hasta 12 caracteres y `padLeft(6)` con espacios por la izquierda: así los productos y los precios salen en columnas.
Las cadenas de Dart no cambian nunca: cada método devuelve una cadena nueva. Por eso raw sigue teniendo sus 34 caracteres con todos los espacios, aunque se haya hecho trim().
Código · main.dart
void main() { String raw = ' Dart is fun and Dart is fast '; // trim removes the spaces at both ends. String text = raw.trim(); print('[$text]'); // Changing case and looking for text. print(text.toUpperCase()); print('Has "fast"? ${text.contains('fast')}'); print('Starts with "Dart"? ${text.startsWith('Dart')}'); print('"is" first at ${text.indexOf('is')}, last at ${text.lastIndexOf('is')}'); // replaceAll swaps text; substring(start, end) cuts a piece. print(text.replaceAll('Dart', 'Flutter')); print('Characters 0 to 4: ${text.substring(0, 4)}'); // split cuts the text into a list; join glues it back. var words = text.split(' '); print('${words.length} words: $words'); print(words.join('_')); // padRight and padLeft fill with characters to line up columns. var items = ['tea', 'croissant', 'juice']; var prices = ['1.30', '2.25', '12.50']; for (int i = 0; i < items.length; i++) { print('${items[i].padRight(12, '.')}${prices[i].padLeft(6)}'); } // Strings never change: each method returns a new one. print('raw still has ${raw.length} characters');}Salida · dart run main.dart
[Dart is fun and Dart is fast] DART IS FUN AND DART IS FAST Has "fast"? true Starts with "Dart"? true "is" first at 5, last at 21 Flutter is fun and Flutter is fast Characters 0 to 4: Dart 7 words: [Dart, is, fun, and, Dart, is, fast] Dart_is_fun_and_Dart_is_fast tea......... 1.30 croissant... 2.25 juice....... 12.50 raw still has 34 characters
Para recordar
trim()quita los espacios de los extremos.contains,startsWitheindexOfbuscan texto.substring(inicio, fin)no incluye el fin.splitda una lista;joinla vuelve a unir.- Los métodos devuelven una cadena nueva; la original no cambia.
Ejercicio
Parta de ' ana GARCIA, madrid ', quite los espacios, sepárela por la coma y escriba Name: Ana Garcia y City: MADRID, con cada palabra del nombre empezando en mayúscula.