String con Dart
Clase 8 de 23 • Curso de Dart desde Cero
Contenido del curso
Clase 8 de 23 • Curso de Dart desde Cero
Contenido del curso
Marcos Ramirez
Marcelo Loredo
Fernando Monsivais
David Argote
Cristian David Acevedo Escobar
Anghelo Alexander Pintado Valverde
Tyler Valencia
Jonathan Macario
Juan José López Torres
Jonathan Macario
Emmanuel Rodríguez
Johan Astudillo
Yury Jajitzky
Camilo Taborda
RodNal CY
Jonathan Macario
Melvin Salas
Jonathan Macario
Kevin Garcia Herrera
Andrés Felipe Arango Rocha
Santiago Blandon
Jesus Mendoza Guerrero
Luis esteban Cruz céspedes
\n Salto de linea \t Tabulado \r retorno
¿Para qué sirve el comando de retorno? Lo probé, pero no tiene ningún efecto.
No estoy seguro si el retorno es lo inverso a tabulación...
Jugando con los métodos de los String hice esto:
void main() { final String name = 'david argote'; final splitName = name.split(' '); final nameFormatter = splitName[0][0].toUpperCase() + splitName[0].substring(1, splitName[0].length) + ' ' + splitName[1][0].toUpperCase() + splitName[1].substring(1, splitName[1].length); print(nameFormatter); // David Argote }
Cambia dos palabras que están en minúscula a la misma palabra pero con las primeras letras de cada palabra a mayúscula. Si encuentras otra forma de resolver esto no dudes en compartirla. Me encantaría verla 👨💻.
pdt: Mi solución solo funciona con 2 palabras, pero sé que se podría hacer para más.
import 'dart:io'; extension StringExtension on String { String toCapitalized() => length > 0 ? '${this[0].toUpperCase()}${substring(1).toLowerCase()}' : ''; String toTitleCase() => replaceAll(RegExp(' +'), ' ') .split(' ') .map((str) => str.toCapitalized()) .join(' '); } void main() { print('Enter your name'); String? name = stdin.readLineSync(); print('Welcome ${name?.toTitleCase()}'); }
Hice una versión que considero menos eficiente en cuestion de memoria pero cumple con el mismo objetivo:
void main() {
String nombre = "anghelo alexander", salida = "";
List<String> palabras = nombre.split(" ");
for (int i = 0; i < palabras.length; i++) {
String complemento = palabras[i].substring(1);
String inicio = palabras[i].substring(0, 1).toUpperCase();
palabras[i] = inicio + complemento;
salida += palabras[i] + " ";
}
print(salida);
}
Me di cuenta que concatenar solo funciona si usas variables del mismo tipo, mientras que con la interpolación, puedes expresar cualquier tipo de variable
¿algún recurso donde encuentre que hace cada función para los String?
Gracias JuanJo
Texto ( String)
ℹ️ Definición Los texto en Dart son una secuencia de unidades conocidas como caracteres.
.
Pueden ser representados mediante ‘’ o “” , y contener una expresión o adición de identificadores (${expression} , "Hello, $name 👋)
var name = "Frank" var isUser = true; var greeting = 'Hello, $name 👋'; var message = ''' $greeting Your are ${ isUser ? 'Authorized' : 'Unauthorized' } ''';
✨Concepto clave La clase String define métodos para la manipulación de sus caracteres, por ejemplo
split(),contains(),startsWith(),endsWith(), entre otros.
.
Expresiones Regulares (RegExp Objects)
ℹ️ Definición Con las expresiones regulares podemos tanto realizar búsquedas en los strings como reemplazar alguna parte deseada.
. Parecido a las capacidades de JavaScript, las expresiones regulares introspeccionan una búsqueda de un patrón sobre un string.
var findNumbers_REGEX = RegExp(r'\d+'); String message = 'Hello, Frank 👋 Today is Sun 21 at 5PM'; print(message.replaceAll(findNumbers_REGEX, 'XX')); // Hello, Frank 👋 Today is Sun XX at XXPM for (final number in findNumbers_REGEX.allMatches(message)) { print(number.group(0)); // 21 5 }
.
Glosario de Métodos
Busqueda en un string.
Para encontrar posiciones en un string y revisar patrones patriculares
String message = 'Nunca digas nunca'; print(message.contains('nunca'));// true print(message.startsWith('Nunca'));// true print(message.endsWith('nunca'));// true print(message.indexOf('nunca')); // 12
Extracción de valores en un string.
Para obtener caracteres individuales.
String message = 'Nunca digas nunca'; print(message.substring(0,5));// Nunca print(message.split(' '));// true
Conversión y formato.
Para manipular el valor final de un string
String message = ' HELLO 👋'; var greeting =message.trim().replaceAll(RegExp('HELLO'), 'Hi Frank'); print(greeting);// Hi Frank 👋 print(greeting.toUpperCase());// HI FRANK 👋
.
❓ Debate ¿Sabes las buenas prácticas y recomendaciones de Dart como lenguaje? ¿Conoces el sitio "Effective Dart"?
Esto es maravilloso, vengo de Java y Python y me Parece un Java demasiado sencillo de entender.
En caso de declarar tu variable con comillas simples y usas comillas dobles para "acentuar" algo, no es necesario usar el backslash. Ejemplo:
'this string contains 2 "double quotes" '; "this string contains 2 'single quotes' ";
Fuente: Documentación de Dart
Y bien, les dejo para que elijan una opción 👨🏽💻...
String tipo; int option = 2; if(option==1){ tipo = "Concatenación"; }else{ tipo = "Interpolación"; } print("Que viva la ${tipo}!");
Ahora bien, intenté hacer esto para capturar la opción elegida (antes del bloque if, else):
print("Elije una opción entre 1 y 2"); int option = stdin.readLineSync();
Pero en DartPad me salió un mensaje de error; no sé si es por que se deba importar algo como import 'dart:io' o algo así...
Desafortunadamente, no puede usar bibliotecas de paquetes como dart:io, ya que DartPad solo admite bibliotecas que funcionan con aplicaciones web. (stackoverflow)
Funciones, acciones que podemos realizarle a cualquier objeto dentro de un lenguaje de progra, "String" es un objeto que tiene funciones aplicables.
Exacto :D
Y en ocasiones también se les llama métodos
según vi un curso fuera de aquí, método se le llaman a las funciones que están dentro de una clase, en este caso ¿el nombre "método" aplicaría?, ¿es "String" una clase?
Jóvenes, alguien sabe donde se puede encontrar documentación de todas estas funciones predefinidas o reservadas (no se como se definen este tipo de funciones), estuve buscando en el website pero no encontré como un listado de funciones donde se explique para que sirve cada una :v
Te reto a imprimir esto "$500" en consola ¿cómo lo harías?
"\$500"
// Sirve para comentar Linea /* */ Sirve para comentar un bloque o todo lo que se encuentre entre si \n Salto de Linea \t Tabulador "+" concatenar texto Ej: print("Hello "+name+" como estas"); "$" interpolar texto Ej:print("Hello $name"); "backslash" Sirve para meter caracteres especiales sin afectar el codigo Ej: print("Hello backslash"$name"\como te va"); PD: uso la palabra backslash en vez del simbolo porque la plataforma de platzi no lo muestra jeje PD2: si no sabes como usar el "backslash" puedes usar el codigo ascii que es :alt+92(Del teclado numerico).
Practicando hice esto
void main() { //ingresamos el nombre , variable letra String nombre = "luis esteban", letra; //Si ira en mayuscula bool mayuscula = true; //Bucle para descomponer el nombre, segun el tamaño del mismo for (int i = 0; i < nombre.length; i++) { //Estraemos la letra por cada recorrido letra = nombre.substring(i, i + 1); //Si sera mayuscula if (mayuscula) { print(letra.toUpperCase()); mayuscula = false; } else { //Si encontro el separador cambia mayuscula mayuscula = letra == " "; //imprime print(letra); } } } L u i s E s t e b a n