Saltar al contenido

Guía 8 de 36

Cadenas de Texto

Interpolación, strings multilínea y tagged templates.

En esta página

Literales de Cadena

let greeting = "Hello, World!"
let single = "It's a string"

Interpolación de Cadenas

Inserta expresiones dentro de cadenas usando {}:

let name = "Zolo"
let msg = "Hello, {name}!"          // "Hello, Zolo!"

let x = 10
let y = 20
let sum = "{x} + {y} = {x + y}"    // "10 + 20 = 30"

Expresiones en la Interpolación

Cualquier expresión puede ir dentro de {}:

let items = [1, 2, 3]
print("Count: {Array.len(items)}")      // "Count: 3"
print("Double: {items[0] * 2}")         // "Double: 2"
print("Greeting: {if loud { "HI!" } else { "hi" }}")

Interpolación Anidada

Las expresiones interpoladas pueden contener sus propias cadenas:

let result = "User: {get_user("admin").name}"

Cadenas Multilínea

Usa comillas triples """ para cadenas multilínea:

let text = """
    This is a
    multiline string
    with indentation preserved
"""

Plantillas con Etiqueta

Las plantillas con etiqueta permiten prefijar una cadena con un nombre de etiqueta, habilitando una sintaxis similar a DSL:

let id = 42
let query = sql"SELECT * FROM users WHERE id = {id}"

let title = "Hello"
let page = html"<h1>{title}</h1>"

Cómo Funcionan las Plantillas con Etiqueta

Una plantilla con etiqueta tag"text {expr} more" se compila como una llamada a función:

// sql"SELECT * FROM users WHERE id = {id}"
// compiles to:
sql({"SELECT * FROM users WHERE id = ", ""}, id)

La función de etiqueta recibe:

  1. Una tabla de partes de cadena literal
  2. Los valores de expresión interpolados como argumentos adicionales

Definiendo Funciones de Etiqueta

fn sql(parts: [str], id: int) -> str {
    "{parts[0]}{id}{parts[1]}"
}

fn html(parts: [str], content: str) -> str {
    "{parts[0]}{content}{parts[1]}"
}

Plantillas con Etiqueta Simples

Plantillas con etiqueta sin interpolación:

let regex = re"^\d+$"      // re({"^\\d+$"})
let path = raw"C:\Users"    // raw({"C:\\Users"})

Operaciones con Cadenas

La biblioteca estándar proporciona utilidades para cadenas:

// Trimming
string.trim("  hello  ")        // "hello"
string.trim_start("  hello")    // "hello"
string.trim_end("hello  ")      // "hello"

// Checking
string.starts_with("hello", "he")   // true
string.ends_with("hello", "lo")     // true
string.contains("hello", "ell")     // true
string.is_empty("")                 // true

// Transforming
string.split("a,b,c", ",")         // ["a", "b", "c"]
string.replace("hello", "l", "r")  // "herro"
string.chars("hello")              // ["h", "e", "l", "l", "o"]

// Padding
string.pad_start("42", 5, "0")     // "00042"
string.pad_end("hi", 5, ".")       // "hi..."

Consulta Biblioteca Estándar para la API completa.

DOCS / OPINIÓN

¿Esta página dejó alguna pregunta?

Cuéntanos dónde te perdió la explicación. La documentación también forma parte de la experiencia del lenguaje.

Índice global

Encuentra tu camino por Zolo

Prueba una idea

Empieza aquí

9 resultados

9 resultados

enespt-br