String tiene varios métodos que se pueden usar para manipular strings.
Estos métodos se llaman sobre el propio string y a menudo se encadenan para realizar varias operaciones sobre un string.
A continuación se muestra una lista de algunos de los métodos más comunes.
Consulta la documentación de la API de String para ver una lista completa de métodos.
El método upcase devuelve un nuevo string con todos los caracteres convertidos a mayúsculas.
"hello".upcase
# => "HELLO"
El método downcase devuelve un nuevo string con todos los caracteres convertidos a minúsculas.
"HELLO".downcase
# => "hello"
Crystal tiene métodos para reemplazar partes de un string.
Se conocen como sub (sustitución) y gsub (sustitución global).
Estos métodos pueden recibir un string, un char o una regex como primer argumento, y un string o un char como segundo argumento.
El primer argumento es la parte del string que se reemplazará, y el segundo argumento es el reemplazo.
Char y las regex se explicarán en conceptos posteriores.
El método sub reemplaza la primera aparición del primer argumento por el segundo argumento.
"hello".sub("l", "r")
# => "herlo"
El método gsub funciona igual que sub, pero reemplaza todas las apariciones del primer argumento por el segundo argumento.
"hello".gsub("l", "r")
# => "herro"
Chomp y strip se pueden usar para eliminar caracteres no deseados de un string.
El método chomp elimina, de forma predeterminada, los últimos caracteres \r, \n o \r\n de un string.
Si se llama al método con un argumento, eliminará el valor dado del final del string,
si es que existe al final del string.
"hello\n".chomp
# => "hello"
"hello".chomp("llo")
# => "he"
De forma predeterminada, el método strip elimina todos los espacios en blanco del principio y el final de un string.
Si se llama al método con un argumento, eliminará ese argumento del principio y el final del string,
si es que existe al principio o al final del string.
" hello ".strip
# => "hello"
El método index se puede usar para encontrar el índice de un carácter en un string.
El método index recibe un String, un Char o una regex como argumento.
Puede recibir un segundo argumento opcional para especificar el índice desde el que buscar.
El método index devuelve el índice de la primera aparición del argumento.
"hello".index("l")
# => 2
"hello".index("l", 3)
# => 3
Puedes usar el método delete_at para eliminar un carácter de un string.
El método delete_at recibe un índice como argumento y elimina el carácter que está en ese índice.
"hello".delete_at(0)
# => "ello"
"hello".delete_at(3)
# => "helo"
El método insert se puede usar para insertar un string en un índice concreto.
El método insert recibe un índice como primer argumento y un string como segundo argumento.
El método insert devuelve un nuevo string con el segundo argumento insertado en el índice.
"hello".insert(0, "h")
# => "hhello"
"hello".insert(3, "l")
# => "helllo"
En este ejercicio, vas a ayudar a unos novios de instituto a declarar su amor en las redes sociales generando un corazón ASCII con sus iniciales:
❤ J. + M. ❤
Implementa el método HighSchoolSweetheart.clean_up_name.
Debe recibir un nombre, eliminar todos los caracteres - y reemplazarlos por un espacio.
También debe eliminar los espacios en blanco del principio y del final del nombre.
HighSchoolSweetheart.clean_up_name("Jane-Ann")
# => "Jane Ann"
Implementa el método HighSchoolSweetheart.first_letter.
Debe recibir un nombre y devolver su primera letra.
Asegúrate de reutilizar HighSchoolSweetheart.clean_up_name, que definiste en el paso anterior.
HighSchoolSweetheart.first_letter("Jane")
# => "J"
Implementa el método HighSchoolSweetheart.initial.
Debe recibir un nombre y devolver su primera letra en mayúscula, seguida de un punto.
Asegúrate de reutilizar HighSchoolSweetheart.first_letter, que definiste en el paso anterior.
HighSchoolSweetheart.initial("Robert")
# => "R."
Implementa el método HighSchoolSweetheart.pair.
Debe recibir dos nombres y devolver las iniciales rodeadas de corazones emoji.
Asegúrate de reutilizar HighSchoolSweetheart.initial, que definiste en el paso anterior.
HighSchoolSweetheart.pair("Blake Miller", "Riley Lewis")
# => "❤ B. + R. ❤"
Regístrate en Exercism para aprender y dominar Crystal con 26 conceptos142 ejercicios y mentoría humana real, todo gratis.