Cadenas, operaciones avanzadas, objeto string.

CADENAS CON COMILLAS DOBLES.

En las cadenas con comillas simples, todo se interpreta literal, sin embargo en las cadenas escritas con comillas dobles, se pueden escribir 'cosas' que se interpreten

BACKSLASH.

Si dentro de una cadena escrita con comillas dobles escribimos el caracter blackslash \
el caracter siguiente se puede interpretar de distintas maneras. Ejemplos:

  • '\n' se interpreta como un salto de linea.
  • '\t' se interpreta como el caracter tab.
  • '\xnn' se interpreta como el caracter correspondiente al número hexadecimal nn.
  • '\"' se interpreta como comillas, pero NO TERMINA CADENA

caso que el caracter que siga al '\' no sea interpretado, se ignorará el backslash.



#Los caracteres especiales
#solo en cadenas dobles.

#salto de linea
puts 'en cadena simple pasa esto\n'
puts "salto \nlinea siguiente"
#ponemos tabs
puts "Nombre:\tEduardo"
puts "Dir.:\tCalle Palotes"
puts "C.P.:\t80003"
#Hexadecimal: \x61 se interpreta
# como el ascii 0x61(97)
puts "0x61 es la letra :'\x61'"
#escribiendo las comillas dobles
puts "Este es el caracter comillas:\""
print "salto de linea con print\n"
puts "esto es otra linea"


en cadena simple pasa esto\n
salto
linea siguiente
Nombre: Eduardo
Dir.: Calle Palotes
C.P.: 80003
0x61 es la letra :'a'
Este es el caracter comillas:"
salto de linea con print
esto es otra linea

OPERADOR EVALUACION

El operador evaluación tiene esta sintaxis #{sentencia}

Solamente puede estar dentro de una cadena con comillas dobles

Por sentencia entenderemos una serie de operaciones cuyo resultado se 'añadirá' a la cadena en el sitio del operador evaluación la sentencia.


Dicho de otra forma : La cadena resultante es la que queda despues de 'evaluarse' la sentencia y añadirse a la cadena.

Ejemplo:



#ejemplos sencillos
#operador evaluacion
variable=1234
#evalua la propia variable
puts "la variable=#{variable}"
variable=10
#operacion con la variable
puts "variable*5=#{variable*5}"
var1=10
var2=5
#doble operacion
puts "var1*var2=#{var1*var2}"


la variable=1234
variable*5=50
var1*var2=50


TROCEADO DE CADENAS

Las dos formas básicas de trocear las cadenas son las siguientes:


CADENA[DESDE..HASTA]

Con esta sintaxis : cadena[x..y] nos estamos refiriendo al 'trozo' de cadena que comienza en la posicion x y termina en la posición y. Siempre entendiendo que la posición inicial es CERO.


Ejemplo


#prueba para trocear cadenas
var="esto es una cadena"
#cojemos el trozo "es"
puts var[5..6]
#ahora el operador evaluacion
puts "\"#{var[5..6]}\""
#ahora sin variables
puts "esto es una cadena"[5..6]

#reconstruir cadena con sus pedazos
var1=var[0..3]+
" "+var[5..6]+" "+var[8..10]+" "+var[12,16]
puts "reconstruida la cadena: "
puts var1

#programa tonto que recorre
#la cadena buscando palabras.

var="esto es una cadena"
#para recorrer la cadena
rPalabra=0
# para guardar el inicio de la palabra
iPalabra=0

while rPalabra<18
if var[rPalabra..rPalabra]==' '
if rPalabra!=iPalabra
puts "palabra \""+
var[iPalabra..rPalabra-1]+"
\""
end
iPalabra=rPalabra+1
end
rPalabra=rPalabra+1
end
if
rPalabra!=iPalabra
puts "palabra \""+
var[iPalabra..rPalabra-1]+"
\""
end


es
"es"
es
reconstruida la cadena:
esto es una cadena
palabra "esto"
palabra "es"
palabra "una"
palabra "cadena"

CADENA[DESDE,CUANTO]

Con esta sintaxis : cadena[x,y] nos estamos refiriendo al 'trozo' de cadena que comienza en la posicion x tomando y caracteres(posiciones). Siempre entendiendo que la posición inicial es CERO.


Ejemplo:



#prueba para trocear cadenas
var="esto es una cadena"
#cojemos el trozo "es"
puts var[5,2]
#ahora el operador evaluacion
puts "\"#{var[5,2]}\""
#ahora sin variables
puts "esto es una cadena"[5,2]

#reconstruir cadena con sus pedazos
var1=var[0,4]+
" "+var[5,2]+" "+var[8,3]+" "+var[12,6]
puts "reconstruida la cadena: "
puts var1

#programa tonto que recorre
#la cadena buscando palabras.

var="esto es una cadena"
#para recorrer la cadena
rPalabra=0
# para guardar el inicio de la palabra
iPalabra=0

while rPalabra<18
if var[rPalabra,1]==' '
if rPalabra!=iPalabra
puts "palabra \""+
var[iPalabra,rPalabra-iPalabra]+"
\""
end
iPalabra=rPalabra+1
end
rPalabra=rPalabra+1
end
if
rPalabra!=iPalabra
puts "palabra \""+
var[iPalabra,rPalabra-iPalabra]+"
\""
end



es
"es"
es
reconstruida la cadena:
esto es una cadena
palabra "esto"
palabra "es"
palabra "una"
palabra "cadena"

MODIFICAR CADENAS.


La sintaxis cadena[x..y] y cadena[x..y] tambien sirve para modificar el contenido de las cadenas

Ejemplo:

#escribiendo subcadenas.
var="soy un vurro"
puts var
puts
"vamos a cambiar la 'v' por la 'b'"
#vamos a arreglar la falta de ortografia
var[7..7]="b"
puts var
puts
"------------------------"
var="esto no esta bien"
puts var
puts
"vamos a cambiar el 'no' por el 'si'"
var[5..6]="si"
puts var

puts
"------------------------"

var="Esto es una mala prueba"
puts "vamos a substituir mala por buena"
#queremos substituir mala por buena,
#pero es substituir 4 caracteres
#por 5 caracteres ¿lo hara bien?
var[12..15]="buena"
puts var
puts
"Ole,lo ha hecho perfectamente."

soy un vurro
vamos a cambiar la 'v' por la 'b'
soy un burro
------------------------
esto no esta bien
vamos a cambiar el 'no' por el 'si'
esto si esta bien
------------------------
vamos a substituir mala por buena
Esto es una buena prueba
Ole,lo ha hecho perfectamente.

ESTADOS DE LAS CADENAS

Una cadena puede estar en los siguientes estados:

  • con datos: cuando tiene datos
  • vacía: cuando tiene la cadena vacía
  • nula: esta sin 'inicializar', no tiene nada cad==nil

Ejemplo:

# esto es una cadena con datos 
cadena='Esto no es una cadena'
# esto es una cadena vacía
cadena=''
# esto es una cadena nula
cadena=nil
# veamoslo con condiciones
if cadena==nil
puts "cadena nula"
elsif cadena==''
puts "cadena vacía"
else
puts "cadena con datos "+"["+cadena+"]"
end

cadena nula

EL OBJETO STRING

En ruby todo son objetos, una caracteristica de los objetos, es que tienen métodos, es decir, funciones asociadas a ellos cuya sintaxis es objeto.metodo parametros.


Las cadenas son objetos de la clase string


Vamos ahora a ver como ejemplo algún método de la clase string, para familiarizarnos con su uso


  • cadena.upcase: nos devuelve la cadena en mayusculas.
  • cadena.upcase!: nos devuelve la cadena en mayusculas. Y además modifica la cadena original
  • cadena.empty?: nos indica si la cadena está vacia (true/false).
  • cadena.lenght: nos devuelve la longitud de la cadena.

Como mejor lo veremos es con ejemplos


#ejemplos de métodos de un objeto string
cadena='Esto es una cadena'
# Podemos ver como es en mayusculas
# ¡sin modificarla!
puts "cadena en mayusculas:"
puts cadena.upcase
#verificamos que no se ha modificado
puts "cadena original:"
puts cadena
# Podemos ver como es en mayusculas
# ¡modificandola!
puts "otra vez en mayusculas:"
puts cadena.upcase!
#verificamos que si se ha modificado
puts "la original modificada:"
puts cadena
#Es tradición que los métodos
#que acaban en "!" modifiquen el objeto.
#-----------------------
#Ahora la longitud
puts "longitud cadena="
puts cadena.length
#el metodo empty?
#nos sirve para saber si está vacia
puts "nuestra cadena esta :"
if cadena.empty? == false
puts "con datos"
end
if
cadena==nil
puts "cadena nula"
elsif cadena.empty? == true
puts "cadena vacía"
else
puts "cadena con datos "+"["+cadena+"]"
end
cadena en mayusculas:
ESTO ES UNA CADENA
cadena original:
Esto es una cadena
otra vez en mayusculas:
ESTO ES UNA CADENA
la original modificada:
ESTO ES UNA CADENA
longitud cadena=
18
nuestra cadena esta :
con datos
cadena con datos [ESTO ES UNA CADENA]

.----oOO--OOo----.

No hay comentarios: