Saltar al contenido
En esta página

Cadenas de Texto

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.

Buscar en Zolo

9 resultados

enespt-br