En el lenguaje Ruby todo es un objeto, por lo tanto los String son objetos.
Veremos que los String tienen una serie de métodos para manipular su contenido: convertirlo a mayúsculas, a minúsculas, verificar si un String esta contenido en otro String, la cantidad de caracteres que tiene, convertir el String a entero (to_i), convertirlo a valor real (to_f) etc.
Para llamar a un método de la clase String lo hacemos a partir de un objeto de dicha clase:
# definimos un objeto de tipo String nombre = "juan" # llamamos a un método de dicho objeto puts nombre.length
El método length retorna la cantidad de caracteres que almacena la variable nombre. Ya hemos visto que para llamar a los métodos de un objeto lo hacemos separando el nombre del objeto y el método por el operador punto.
Haremos una serie de ejercicios para mostrar los métodos más comunes de los String en Ruby.
Inicializar un String con la cadena "mAriA" luego llamar a sus métodos upcase, downcase y capitalize, guardar los datos retornados en otros Strings y mostrarlos por pantalla.
nombre = "mAriA" cadena1 = nombre.upcase puts cadena1 cadena2 = nombre.downcase puts cadena2 cadena3 = nombre.capitalize puts cadena3
Si ejecutamos el programa podemos observar que el método upcase retorna el contenido de la cadena convertida a mayúsculas, downcase la retorna convertida a minúsculas y capitalize solo deja en mayúsculas el primer caracter:
Es importante notar que el contenido de la variable nombre no cambia al llamar a cualquiera de los tres métodos vistos.
Inicializar un String con la cadena "mAriA" luego modificar el contenido de la misma variable llamando a los métodos upcase!, downcase! y capitalize!.
Es importante tener en cuenta que en el lenguaje Ruby se puede utilizar los caracteres ! y ? al final del nombre de un método.
nombre = "mAriA" nombre.upcase! puts nombre nombre.downcase! puts nombre nombre.capitalize! puts nombre
En pantalla el resultado es el mismo, lo importante es notar que el método upcase! convierte a mayúscula los caracteres almacenados en la variable nombre.
En general, los métodos que terminan con el caracter ! indican que el método modificará el objeto en el que se llama. En Ruby se llama a estos "métodos peligrosos" porque cambian de estado su contenido.
Es importante notar la diferencia entre los métodos upcase y upcase!. Se utiliza mucho este concepto en la biblioteca estándar de Ruby y en librerías hechas por otros programadores de Ruby.
Cargar los nombres de dos personas por teclado y luego mostrar el que tiene más caracteres.
print "Ingrese primmer nombre:" nombre1 = gets.chomp print "Ingrese segundo nombre:" nombre2 = gets.chomp if nombre1.length == nombre2.length print nombre1, " ", nombre2, " tienen la misma cantidad de caracteres:", nombre1.length else if nombre1.length > nombre2.length print nombre1, " tiene ", nombre1.length else print nombre2, " tiene ", nombre2.length end end
El método length retorna la cantidad de caracteres almacenados en la variable de tipo String.
Ingresar por teclado una oración y luego mostrar un mensaje si el String ingresado comienza con la cadena "hola", finaliza con la palabr "hola" o dentro de la cadena esta la palabra "hola".
print "Ingrese una oración:" oracion = gets.chomp if oracion.start_with?("hola") puts "La oración comienza con la palabra 'hola'" end if oracion.end_with?("hola") puts "La oración finaliza con la palabra 'hola'" end if oracion.include?("hola") puts "La oración tiene contenido la palabra 'hola'" end
En este problema empleamos tres nuevos métodos de la clase String:
En Ruby cuando un método retorna true o false es común que se utilice el caracter ? como último caracter del nombre de método (toda la librería estándar de Ruby así lo implementa)
Ingresar por teclado una oración y luego remplazar todas las cadenas "hola" que contiene la oración por la cadena "hello".
print "Ingrese una oración:" oracion = gets.chomp oracion.gsub!("hola", "hello") puts oracion
El método gsub! (global substitution) modifica la variable "oración" sustituyendo todas las apariciones del String "hola" por la cadena "hello".
Recordar que los métodos que terminan con el signo de exclamación "!" normalmente modifican el contenido de la variable (en este ejemplo modifican la variable "oracion")
Dentro de la biblioteca estándar de Ruby hay otros tres métodos que hacen actividades similares a este método:
nueva_oracion = oracion.gsub("hola", "hello")
Con los objetos de tipo String podemos concatenar sus valores utilizando el operador +.
Si tenemos por ejemplo dos String y queremos generar un tercer String con el contenido de los dos primeros lo podemos hacer utilizando el operador +:
cadena1 = "hola" cadena2 = " mundo" cadena = cadena1 + cadena2 puts cadena # se imprime: hola mundo
Mediante el operador << podemos añadir un String a otro String:
cadena1 = "hola" cadena2 = " mundo" cadena1 << cadena2 puts cadena1 # se imprime: hola mundo
Al String cadena1 se le añade el contenido de cadena2.
Es bueno siempre tener a mano la página oficial de la clase String de Ruby