Cadenas de caracteres

Strings o caracteres encadenados. Si ya sabes lo que es una cadena de caracteres, me preocuparía que no veas este vídeo a velocidad 1.5x o que no te saltes la parte en la que explico que es lo que va entre comillas, en verdad.

Las cadenas de caracteres en Elixir son una herramienta fundamental para representar texto compuesto por uno o varios caracteres encadenados. A diferencia de los átomos, que son más limitados en cuanto a los caracteres que pueden contener, las cadenas nos permiten incluir cualquier símbolo dentro del rango Unicode. Esto significa que podemos escribir desde letras comunes hasta emojis o caracteres de alfabetos diversos como el ruso, griego o chino, sin preocuparnos por problemas de codificación.

Para definir una cadena de caracteres en Elixir, simplemente encerramos el texto entre comillas dobles. Por ejemplo, "hola mundo" es una cadena válida. Cuando imprimimos esta cadena, Elixir la muestra en un color diferente al de los átomos, indicando que se trata de un tipo distinto. Los átomos, por su parte, no pueden contener espacios y tienen restricciones en los caracteres que admiten, mientras que las cadenas son mucho más flexibles.

El uso principal de las cadenas de caracteres es cuando necesitamos interactuar con el mundo exterior. Por ejemplo, al recibir parámetros en una aplicación web desarrollada con Phoenix o al enviar datos al navegador, las cadenas son el tipo de dato adecuado. Los átomos, en cambio, se reservan para usos internos, como comunicar resultados entre funciones o codificar tipos especiales dentro del programa.

Una gran ventaja de las cadenas en Elixir es la amplia biblioteca de funciones disponibles en el módulo String. Este módulo nos ofrece herramientas para manipular texto de manera sencilla y eficiente. Por ejemplo, con String.length/1 podemos obtener la longitud de una cadena:

String.length("hola mundo") # Devuelve 10

También podemos convertir cadenas a mayúsculas o minúsculas usando String.upcase/1 y String.downcase/1 respectivamente:

String.upcase("palabra")   # Devuelve "PALABRA"
String.downcase("PALABRA") # Devuelve "palabra"

Para acceder a un carácter en una posición específica, String.at/2 es muy útil. Recibe la cadena y el índice (empezando en 0) y devuelve el carácter correspondiente:

String.at("palabra", 3) # Devuelve "a"

Estas funciones facilitan la manipulación de texto, algo que no es posible con los átomos, que carecen de tantas funcionalidades para trabajar con cadenas.

Un detalle importante al trabajar con cadenas es cómo manejar las comillas dobles dentro de ellas. Si queremos incluir comillas en el texto, debemos escaparlas usando una barra invertida (\). Por ejemplo:

"Alicia dijo: \"No hagas caso\" en voz alta."

Sin este escape, Elixir interpretaría la comilla como el final de la cadena y generaría un error.

Además, Elixir permite crear cadenas multilínea de forma sencilla. Si abrimos una cadena con comillas dobles y pulsamos Enter, los saltos de línea se incluyen dentro de la cadena. Internamente, estos saltos se representan con el carácter especial \n, que indica un salto de línea. Por ejemplo:

"""
No hagas caso
en voz alta.
"""

Este texto incluye un salto de línea entre las dos frases. Cuando se imprime, Elixir muestra los saltos de línea como \n, que es la forma estándar de representar un salto en muchas lenguajes y sistemas.

En resumen, las cadenas de caracteres en Elixir son un tipo de dato muy versátil y esencial para trabajar con texto, especialmente cuando interactuamos con sistemas externos o necesitamos manipular texto de forma avanzada. Su compatibilidad con Unicode y la amplia gama de funciones del módulo String las convierten en una herramienta indispensable en nuestro día a día como programadores en Elixir.

Lista de reproducción
  1. 1
    ¿Qué es Elixir?
    10 minutos
  2. 2
    Instalación de Elixir
    9 minutos
  3. 3
    ¿Qué es la programación funcional? (Como la de Elixir)
    20 minutos
  4. 4
    ¿Cómo funciona la REPL de Elixir?
    7 minutos
  5. 5
    ¿Cómo hacer asignaciones en Elixir?
    7 minutos
  6. 6
    Operadores aritméticos básicos
    6 minutos
  7. 7
    ¿Qué son los tipos de datos de Elixir?
    5 minutos
  8. 8
    Átomos en Elixir
    4 minutos
  9. 9
    Las palabras clave nil, true y false
    6 minutos
  10. 10
    Operadores lógicos de comparación
    8 minutos
  11. 11
    Comparación estricta con ===
    3 minutos
  12. 12
    Operadores lógicos y proposicionales
    8 minutos
  13. 13
    Invocación de funciones
    10 minutos
  14. 14
    Fundamentos de funciones
    9 minutos
  15. 15
    Cadenas de caracteres
    8 minutos
  16. 16
    Entrada y salida estandar de la mano de gets y puts
    9 minutos
  17. 17
    Concatenar e interpolar strings
    9 minutos
  18. 18
    Código fuente en archivos
    9 minutos
  19. 19
    Condicional IF y bloques DO-END
    11 minutos
  20. 20
    IFs anidados, UNLESS y COND
    12 minutos
  21. 21
    Definición de funciones
    11 minutos
  22. 22
    Fundamentos de compilación de módulos
    6 minutos
  23. 23
    Guardas
    8 minutos
  24. 24
    Funciones anónimas
    7 minutos
  25. 25
    Capturar funciones
    4 minutos
  26. 26
    Invocación de funciones dentro del mismo módulo
    7 minutos
  27. 27
    Tuplas
    8 minutos
  28. 28
    Introducción al pattern matching
    8 minutos
  29. 29
    Pattern matching en funciones
    11 minutos
  30. 30
    Las tuplas :ok, :error
    7 minutos
  31. 31
    case
    10 minutos
  32. 32
    Operador pin
    7 minutos
  33. 33
    Pattern matchings y recursividad
    5 minutos
  34. 34
    Listas
    9 minutos
  35. 35
    Operadores y funciones de lista
    10 minutos
  36. 36
    Keyword lists: listas de palabras clave
    8 minutos
  37. 37
    Mapas
    7 minutos
  38. 38
    Pattern matching de mapas y keyword lists
    6 minutos
  39. 39
    Operadores y funciones para mapas y keyword lists
    5 minutos
  40. 40
    Estructuras con defstruct
    11 minutos
  41. 41
    Bitstrings
    11 minutos
  42. 42
    Charlists
    10 minutos
  43. 43
    Funciones de alto orden en Elixir
    5 minutos
  44. 44
    Uso de la función filter
    10 minutos
  45. 45
    Uso de la función map
    7 minutos
  46. 46
    Uso de la función reduce
    9 minutos
  47. 47
    Pipelines
    11 minutos
  48. 48
    Rangos y Streams
    11 minutos
  49. 49
    Funciones recursivas con listas
    14 minutos