Recortando espacios en Go: cómo eliminar caracteres sobrantes de una cadena

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Un problema familiar para todo desarrollador

\n\n

Imagine: está escribiendo un analizador de registros, procesando la entrada del usuario desde un formulario o preparando datos para una API. Las cadenas llegan con espacios sobrantes al principio y al final. Si no los elimina: errores, comparaciones rotas, JSON incorrectos y horas de depuración perdidas. Esta es una tarea clásica que ha acumulado miles de visitas en Stack Overflow. Hoy la resolveremos en Go: rápido, elegante y sin sorpresas.

\n\n

En esta guía aprenderá:

\n
    \n
  • Cómo usar la biblioteca estándar strings para recortar espacios.
  • \n
  • En qué se diferencia TrimSpace de TrimLeft y TrimRight.
  • \n
  • Cómo escribir su propia función personalizada para caracteres whitespace no estándar.
  • \n
  • Cómo evitar errores con Unicode y tabulaciones.
  • \n
\n\n

¡Allá vamos!

\n\n

Inicio rápido: strings.TrimSpace

\n\n

La forma más sencilla y popular de eliminar espacios de ambos extremos de una cadena es usar la función strings.TrimSpace del paquete estándar strings. Elimina todos los caracteres que Go considera "whitespace": espacios normales, tabulaciones, saltos de línea, retornos de carro e incluso tabulaciones verticales.

\n\n

Así se ve en el código:

\n\n
package main\n\nimport (\n    "fmt"\n    "strings"\n)\n\nfunc main() {\n    raw := "   ¡Hola, mundo!   \\n\\t"\n    cleaned := strings.TrimSpace(raw)\n    \n    fmt.Printf("Original: %q\\n", raw)\n    fmt.Printf("Limpia: %q\\n", cleaned)\n}\n
\n\n

Salida:

\n
Original: "   ¡Hola, mundo!   \\n\\t"\nLimpia: "¡Hola, mundo!"\n
\n\n

Observe: %q en fmt.Printf muestra la cadena con secuencias de escape; es útil para la depuración y ver caracteres ocultos.

\n\n

Cuándo usarlo: en el 90% de los casos esto es suficiente. Si solo necesita "limpiar" una cadena de basura en los bordes, use TrimSpace.

\n\n

Ajuste fino: TrimLeft y TrimRight

\n\n

A veces es necesario recortar espacios solo a la izquierda o solo a la derecha. Para esto, Go tiene strings.TrimLeft y strings.TrimRight. Pero hay un detalle: no funcionan con "caracteres whitespace" de forma predeterminada, sino con un conjunto de caracteres especificado.

\n\n

Ejemplo:

\n\n
package main\n\nimport (\n    "fmt"\n    "strings"\n)\n\nfunc main() {\n    s := "   \\t\\n   Hola   "\n    \n    // Recortar solo a la izquierda (espacios, tabulaciones, saltos de línea)\n    left := strings.TrimLeft(s, " \\t\\n")\n    fmt.Printf("Izquierda: %q\\n", left)\n    \n    // Recortar solo a la derecha (solo espacios)\n    right := strings.TrimRight(s, " ")\n    fmt.Printf("Derecha: %q\\n", right)\n}\n
\n\n

Salida:

\n
Izquierda: "Hola   "\nDerecha: "   \\t\\n   Hola"\n
\n\n

Importante: TrimLeft y TrimRight eliminan todos los caracteres del segundo argumento hasta que encuentran un carácter que no está en él. Si solo especifica el espacio " ", la tabulación \\t permanecerá intacta.

\n\n

Análogo de TrimSpace para un solo lado

\n\n

Si necesita recortar todos los whitespace solo a la izquierda o solo a la derecha, pero le da pereza enumerar todos los caracteres, puede escribir un pequeño envoltorio:

\n\n
func trimLeftSpace(s string) string {\n    return strings.TrimLeft(s, " \\t\\n\\r\\v\\f")\n}\n\nfunc trimRightSpace(s string) string {\n    return strings.TrimRight(s, " \\t\\n\\r\\v\\f")\n}\n
\n\n

O, para los que aman la brevedad, use strings.TrimSpace con un truco:

\n\n
// Recortar solo a la izquierda: primero invertir, luego TrimSpace, luego invertir de nuevo\nfunc trimLeftSpace(s string) string {\n    runes := []rune(s)\n    for i, r := range runes {\n        if !unicode.IsSpace(r) {\n            return string(runes[i:])\n        }\n    }\n                

Blogs

Book Recommendations