Curso de Ruby

Curso de Ruby

Sim贸n Soriano

Sim贸n Soriano

Tipos de datos II: Strings

5/39
Recursos

Aportes 23

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Algunos m茅todos para un string:

  • 鈥渉ola鈥.upcase (Devuelve una copia de la cadena en may煤sculas)
  • 鈥渉ola鈥.downcase ( Devuelve una copia de la cadena en minusculas)
  • 鈥渉ola鈥.length (Devuelve la cantidad de caracteres de la cadena)
  • 鈥淗oLa鈥.swapcase (Devuelve una copia de la cadena con caracteres alfab茅ticos en may煤sculas convertidos a min煤sculas y viceversa)
  • 鈥渉ola鈥.include? 鈥渉鈥 (Devuelve true si el car谩cter asignado entre est谩 incluido en nuestra cadena o variable)
  • " hola".strip (Devuelve una copia de la cadena con caracteres alfab茅ticos en may煤sculas convertidos a min煤sculas y min煤sculas convertidos a may煤sculas)
  • 鈥溾.empty (Devuelve true si la cadena est谩 vacia)
  • 鈥淗ola ruby鈥.gsup(鈥渞uby鈥, 鈥渕undo鈥) ( Devuelve una copia de la cadena con todas las apariciones de patr贸n sustituidas por el segundo argumento )
  • gsub! (Para modificar la variable en ves de devolver una copia)

Cuando un m茅todo lleva signos de admiraci贸n ** ! ** por lo general se le conoce como M茅todo Bang

驴C贸mo declarar una string?


En Ruby hay diferentes formas de declarar un string

saludo = "Hola"
saludo = 'Hola'
# Estas notaciones nos ayudan a cuando necesitamos utilizar comillas dentro de un string like = %q(Mar铆a "la patilla" Coll)
saludo = %q(Hola)
saludo = %Q(Hola)

Otra caracter铆stica 煤til es que podemos reemplazar (interpolar) una variable dentro de la declaraci贸n de un string

nombre = mar铆a
saludo = "Hola #{nombre}"
saludo = %Q(Hola #{nombre})

#Si lo hacemos con comillas sencillas desactivamos la interpolaci贸n
saludo = 'Hola #{4 + 5}'

Podemos escribir string sin que sean variables

"Pepe".class

# Para poner todo uppercase
"Pepe".upcase

# Para poner todo lowercase
"PEPE".downcase

# Para saber de que tama帽o es un string
"Pepe".length

# Para invertir el casing de cada uno de los car谩cteres
"PePE".swapcase # pEpe

# Para preguntar si una variable contiene x car谩cter
"Pepe".include? "a"

# Si tenemos un string que tenga espacio innecesarios en el inicio y el final para que lo quite utilizar el m茅todo
"   Pepe   ".strip

# Podemos preguntar si un string est谩 vac铆o
"Pepe".empty?

# Para reemplazar algo dentro del string
"Pepe".gsub("Pe", "Ru")

Podemos utilizar los operadores para buscar cosas o sumar.

# Para concatenar un string
"Pepe" + " simon"

# Podemos multiplicar un string
"Pepe"*3

# Para crear una nueva variable con gsub
nombre_2 = "Pepe D铆az".gsub("D铆az", "Fernandez")

# Pero para cambiar el valor de una variable
"Pepe D铆az".gsub!("D铆az", "Fernandez")

Normalmente si un m茅todo tiene un 鈥!' es por este va a modificar una variable.

M茅todos para strings

Las cadenas en Ruby tienen muchos m茅todos integrados que facilitan la modificaci贸n y manipulaci贸n del texto, ya que en la mayor铆a de casos este es tratado como un objeto. Algunas de las cosas que podemos hacer son:

  • Acceso a caracteres dentro de una cadena
  • Convertir a may煤sculas o min煤sculas, capitalizar una cadena
  • Relleno o eliminaci贸n de caracteres en una cadena
  • B煤squeda de caracteres y texto
  • Sustituci贸n de texto en cadenas
  • Determinar la longitud de la cadena
  • Interpolar cadenas de texto

Conceptos extra铆dos de :

Buena con la repetion del minuto 6:38 JJAJAJAJAJAJAJAJAJAJAJAJAJA

Algunas convensiones usadas en el lenguaje Ruby:

Si la funcion termina con signo de pregunta ? la funcion retorna un booleano
Si la funcion termina con un signo de exclamacion la funcion modificara el contenido de la variable a la que apunta

Siempre que se va a usar interpolacion se debe de usar comillas dobles. Ej.
saludo = "Hola #{nombre}"
Hola Luis

o sino usar %Q(Hola #{4 + 5})

En este enlace muestran muy claramente las diferentes funcionalidades de ruby, https://ruby.github.io/TryRuby/ les encantar谩

Excelente!!

Tipos de datos en Ruby:

String : Valor cadena
Ejemplo:
"Hola"
Ejemplo dos :
nombre ="Juan"
saludo = 鈥渉ola #{nombre}鈥

Para uppcase :
.upcase

Para downcase:
.downcase

Tama帽o de la palabra:
.lenght

Para intercambiar minus/mayus:
.swapcase

Para verificar si incluye una letra:
.include?

Para eliminar los espacios en blanco:
.strip

Para verificar si la cadena es vacia:
.empty?

Para cambiar un parametro en la cadena :
鈥淪imon Soriano鈥.gsub(鈥淪imon鈥, 鈥淪antiago鈥)

Para cambiar internamente el valor:
nombre.gsub!(鈥渟imon鈥,鈥減epe鈥)

Como todo en ruby son Objectos en este caso 鈥渉ola鈥 es de tipo String, entonces todos estos metodos como upcase, include? etc etc, son 鈥渕etodos de instancia鈥, es muy importante tambien entender esto.

Basicamente por detr谩s existe algo como esto.

class String < Object
	def downcase
	end
end

Obviamente esto esta escrito al final en C pero esto te ayuda a entender mucho como funciona ruby.

Entonces, si no utilizas el signo de admiraci贸n (!) despu茅s del nombre del m茅todo, el objeto al que se le est谩 aplicando el m茅todo no se ve afectado y 煤nicamente se crea una copia que probablemente se guarde en una variable. Es decir, no es mutable.

Sin embargo, cuando utilizas el m茅todo seguido de un signo de admiraci贸n, se afecta el objeto/variable al que le est谩s aplicando el m茅todo (act煤a mutablemente) y si esa acci贸n planeabas asignarla a una variable, lo que pasar谩 es que esa variable va a apuntar al objeto afectado por el m茅todo. OJO CON ESTO

>d = 鈥淒iego鈥
鈫 鈥淒iego鈥
> e= d.gsub(鈥D鈥, 鈥淔鈥)
鈫 鈥淔iego鈥
>d
鈫 鈥淒iego鈥
> e
鈫 鈥淔iego鈥

>e = d.gsub!(鈥D鈥, 鈥淐鈥)
鈫 鈥淐iego鈥
>d
鈫 鈥淐iego鈥
>e
鈫 鈥淐iego鈥

Entonces la utilizaci贸n del s铆mbolo 鈥!鈥 hace que los String s铆 sean mutables, ya que conservan su mismo object_id

Desactivar Interpolaci贸n

Metodos utlitarios para manejo de String

Como dato a tomar en cuenta:

/*Permite interpolaci贸n*/
saludo = %Q(Hola #{nombre})
saludo = "Hola #{nombre}"

/*NO permite interpolaci贸n*/
saludo = %q(Hola #{nombre})
saludo = 'Hola #{nombre}'

Excelente, sencillo y super robusto el lenguaje

Es muy importante saber cuando utilizar comillas dobles y comillas simples, porque el interprete ya sabe que hacer de acuerdo a las comillas, si no vas a utilizar interpolacion es mejor ocupar comillas simple o %q

declarando un string

saludo = 鈥榟ola鈥 or 鈥渉ola鈥

鈥擯or ejemplo

nombre = 鈥楶epe鈥

saludo = " Hola #{nombre}"

o por ejemplo

saludos = 鈥渉ola #{9+7}鈥

x.methods 鈥 PARA SABER TODOS LOS M脡TODOS

鈥淛ohnny鈥.upcase - vALOR EN MAYUSCULA

鈥淛ohnny鈥.downcase - VALOR EN MIN脷SCULA

nombre.length 鈥 CANTIDAD DE D脥GITOS

nombre.swapcase 鈥 CAMBIAR EL ORDEN DE LOS DIGITOS

nombre.include? 鈥済鈥 - true or false

PARA ELIMINAR LOS ESPACIOS 鈥

" asdasdsa ".strip

PARA PREGUNTAR SI UN STRING ESTA VACIO 鈥

鈥渁sdasd鈥.empty?

PARA REEMPLAZAR ALGO DENTRO DEL STRING

鈥淪imon soriano鈥.gsub(鈥淪Imon鈥,鈥淛Ohnny鈥)

----- OPERACIONES CON STRING------

nombre = 鈥淪imon鈥

nombre + " santiago"

鈥渟imon santiago鈥.gsub(鈥渟imon鈥, 鈥減epe鈥)

Una variable string en Ruby se debe eliminar en algun momento? Genera uso de memoria cuando se interpreta y no se utiliza?

Los Strings en Ruby
Los string son una secuencia de caracteres entre comillas simples (鈥欌) o comillas dobles ("").

# String 1
s1 = 'Esta es una cadena con comillas simples'

# String 2
s2 = "Esta es una cadena con comillas dobles"

M茅todos de objetos en Ruby
En Ruby, los m茅todos son capacidades integradas de los objetos. Para acceder a los m茅todos de un objeto, se debe llamar usando un punto (.) seguido del nombre del m茅todo. Veamos el uso de m茅todos en strings:

my_var = "platzi"

# M茅todo para obtener la longitud de una cadena
print my_var.length # 10

# M茅todo para invertir la cadena
print my_var.reverse # iztalp

# M茅todo para convertir todas las letras a may煤sculas
print my_var.upcase # PLATZI

El #{nombre} me recuerda al ${nombre} de javascript

soy nuevo esto pero no me quedo claro desde un principio si se trabaja en consola CMD o por ejemplo visual studio?