Los strings (o cadenas de texto) son secuencias de caracteres entre comillas simples o comillas dobles. '' (dos comillas simples) no tienen nada: podemos llamarlo string vacío.
puts "Hola mundo" # Se puede usar " o ' para los strings, pero ' es más eficiente. puts 'Hola mundo' # Juntando cadenas puts 'Me gusta' + ' Ruby' # Secuencia de escape puts 'Ruby\'s party' # Repetición de strings puts 'Hola' * 3 # Definiendo una constante # Más adelante se hablará de constantes PI = 3.1416 puts PI
En Ruby las cadenas son mutables: se pueden modificar. Ruby almacena las cadenas como secuencias de bytes.
Strings con acento grave `
Hay unos strings especiales que se diferencian por usar como delimitador el acento grave `:
puts `dir`
El string entre los acentos, es enviado al sistema operativo como un comando a ser ejecutado. El resultado devuelto por el sistema, es recogido por Ruby. En este caso, al estar puts, obtendremos en pantalla el resultado de `dir`.
Interpolación
Con la interpolación nos referimos al proceso de insertar el resultado de una expresión dentro de un string. La forma de hacerlo es mediante #{ expresión }. Ejemplo:
puts "100 * 5 = #{100 * 5}"
La sección #{100*5} se ejecuta y pone el resultado en esa posición. Es decir, 500.
Comillas simples (') vs comillas dobles (")
La diferencia entre ambas formas, es el tiempo que se toma Ruby en cada una: mientras que con las simples comillas, Ruby hace muy poco; en las dobles comillas, Ruby tiene que hacer más trabajo:
- busca posibles sustituciones: las secuencias de escape (las que empiecen por un \) son sustituidas por su valor binario.
- busca posibles interpolaciones: en las secuencias con #{expresión}, se calcula la expresión, y se sustituye el bloque entero por su resultado.
def di_adios(nombre) resultado = "Buenas noches, #{nombre}" return resultado end puts di_adios('Pepe') =begin Como los métodos devuelven el valor de la última línea, no hace falta el return. =end def di_adios2(nombre) resultado = 'Buenas noches, ' + nombre end puts di_adios2('Pepe') =begin Ahora, en vez de usar ", usamos ', utilizando la concatenación de strings para obtener el mismo resultado. =end
String#length
String#length devuelve el número de bytes de una cadena.
string = "Esto es una cadena" string.length # => 18
string.length devuelve 18. Cuenta todas las letras, incluidos los espacios en blanco.