Strings en Swift: interpolación, multiline, caracteres Unicode y métodos principales

La interpolación embebe cualquier expresión Swift dentro de una cadena con (...):

let nombre = "Swift"
let version = 5.9
print("(nombre) (version)")       // Swift 5.9
print("2 + 2 = (2 + 2)")           // 2 + 2 = 4
print("(nombre.uppercased())!")     // SWIFT!

// Formateo con String(format:)
let precio = 9.5
print(String(format: "Precio: %.2f EUR", precio))  // Precio: 9.50 EUR

Cadenas multilínea y raw strings

// Multilínea: comienza en la línea siguiente a las triple comillas
let json = """
    {
        "nombre": "Ana",
        "edad": 30
    }
    """

// Raw string: las barras invertidas son literales
let ruta  = #"C:\Users\Ana\Docs"#
let regex = #"\d{4}-\d{2}-\d{2}"#

Por qué no existen índices numéricos

Un Character en Swift puede ocupar entre 1 y varios scalares Unicode (emojis, grafemas compuestos como é = e + acento combinador). Por eso no existe str[3]; se usa String.Index:

let s = "Cafeu{301}"  // Café con acento combinado
print(s.count)  // 4, no 5

let idx = s.index(s.startIndex, offsetBy: 2)
print(s[idx])   // f

for c in "Hello " {
    print(c, terminator: "")
}
// H e l l o (emoji)

Métodos más usados

let texto = "  Hola, Mundo  "
print(texto.trimmingCharacters(in: .whitespaces))  // "Hola, Mundo"
print("swift".capitalized)  // Swift
print("abc".hasPrefix("ab")) // true
print("abc".hasSuffix("bc")) // true

let partes = "a,b,c".split(separator: ",")
print(partes)  // ["a", "b", "c"]

print("programacion.net".contains("net"))  // true
print("Swift 5".replacingOccurrences(of: "5", with: "6"))  // Swift 6

Strings como Comparable

let a = "apple", b = "banana"
print(a < b)  // true (orden lexicográfico Unicode)

let palabras = ["naranja", "manzana", "pera"]
print(palabras.sorted())  // ["manzana", "naranja", "pera"]

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP