Crystal tiene un tipo llamado String, que se usa para representar texto: una cadena de caracteres.
Los strings de Crystal son secuencias de caracteres Unicode.
Los strings son inmutables, lo que significa que no se pueden cambiar una vez creados.
Esto quiere decir que se crea un string nuevo cada vez que modificas un string; por lo tanto, el string original no se modifica.
Para definir un string usas comillas dobles ".
"Hello World"
Para concatenar dos strings, usa el operador +.
El operador + devuelve un string nuevo que combina los dos strings.
hello = "Hello"
hello + " World"
# => "Hello World"
El método to_i convierte un string en un entero.
Como alternativa, puedes usar el método to_f para obtener un número de punto flotante.
Si el string no se puede convertir en un número, se lanzará un ArgumentError.
"1".to_i
# => 1
"1.0".to_f
# => 1.0
"Hello".to_i
# => ArgumentError: Invalid integer: Hello
Un entero o un número de punto flotante se puede convertir en un string usando el método to_s.
1.to_s
# => "1"
1.0.to_s
# => "1.0"
La interpolación es una forma práctica de combinar strings e incrustar expresiones dentro de un string.
Para interpolar un string, puedes usar el carácter # seguido de llaves {} con la expresión dentro de las llaves.
name = "World"
"Hello #{name}!"
# => "Hello World!"
Crystal convierte automáticamente el resultado de la expresión en un string.
"Hello #{1 + 1}!"
# => "Hello 2!"
Cuando necesitas saber cuántos caracteres tiene un string, puedes usar el método size, que devuelve la longitud del string como un entero.
El tamaño de un string es una propiedad almacenada del string, así que no tiene que calcular el tamaño cada vez que llamas al método, lo que lo hace muy rápido.
"Hello World".size
# => 11
La indexación es cuando quieres obtener un carácter específico de un string.
Para obtener un carácter de un String puedes usar la conocida notación de corchetes.
[] está implementado como un método de instancia de String, donde el índice es el argumento del método.
El primer carácter de un string está en el índice 0.
"Hello World"[0]
# => 'H'
"Hello World"[6]
# => 'W'
Para obtener un carácter desde el final de un string, puedes tomar la longitud del string menos uno para obtener el índice del último carácter; para el penúltimo carácter, tomas la longitud del string menos dos, y así sucesivamente. Hay un atajo para esto, y es simplemente usar un índice negativo: el último carácter está en el índice -1, el penúltimo en el índice -2, y así sucesivamente.
name = "Hello World"
name[name.size - 1]
# => 'd'
name[-1]
# => 'd'
Algunos caracteres no se pueden escribir directamente en un string; en su lugar, tienes que usar una secuencia de escape.
Por ejemplo, si quieres usar comillas dobles dentro de un string, tienes que escapar las comillas dobles.
Puedes usar el carácter \ para escribir una secuencia de escape, seguido del carácter que quieres escapar.
Estos son los caracteres especiales en Crystal:
| Valor | Descripción |
|---|---|
\a |
Alerta |
\b |
Retroceso |
\e |
Escape |
\f |
Avance de página |
\n |
Salto de línea |
\r |
Retorno de carro |
\t |
Tabulación horizontal |
\v |
Tabulación vertical |
\\ |
Barra invertida |
\' |
Comilla simple |
\" |
Comilla doble |
\377 |
Carácter ASCII octal |
\xFF |
Carácter ASCII hexadecimal |
\uFFFF |
Carácter Unicode hexadecimal |
puts "Hello \"World\""
# => Hello "World"
puts "Hello \nWorld"
# => Hello
# => World
Para escribir un string de varias líneas, usas la misma sintaxis que para un string de una sola línea, pero haces un salto de línea por cada línea que quieras incluir en el string.
"Hello
World"
# => "Hello\nWorld"
Había una vez un programador excéntrico que vivía en una casa extraña con ventanas enrejadas. Un día aceptó un trabajo de un portal de empleo en línea para construir un robot de fiesta. Se supone que el robot saluda a las personas y las ayuda a llegar a sus asientos. La primera edición era muy técnica y dejaba ver la falta de habilidades sociales del programador. Algunas de esas fallas también llegaron a la siguiente edición.
Implementa el método welcome para devolver un mensaje de bienvenida usando el nombre dado:
PartyRobot.welcome("Christiane")
# => Welcome to my party, Christiane!
Implementa el método happy_birthday para devolver un mensaje de cumpleaños usando el nombre y la edad dados de la persona.
Lamentablemente, el programador es un poco presumido, así que el robot tiene que demostrar que conoce el cumpleaños de cada invitado.
PartyRobot.happy_birthday("Frank", 58)
# => Happy birthday Frank! You are now 58 years old!
Implementa la función assign_table para dar indicaciones.
Debe aceptar 5 parámetros.
String)Int)String)String)Float64)El formato exacto del resultado se puede ver en el ejemplo de abajo.
El nombre de la persona que se sienta al lado debe acortarse a la primera y la última letra del nombre. Frank se convierte en Fk, Christian en Cn, y así sucesivamente.
El robot proporciona el número de la mesa. El robot también menciona la distancia a la mesa. Afortunadamente, solo con una precisión limitada a 1 dígito.
PartyRobot.assign_table("Christiane", "on the left", 27, 23.7834298, "Frank")
# =>
# Welcome to my party, Christiane!
# You have been assigned to table 27. Your table is on the left, exactly 23.8 meters from here.
# You will be sitting next to Fk.
Regístrate en Exercism para aprender y dominar Crystal con 26 conceptos142 ejercicios y mentoría humana real, todo gratis.