Saltar al contenido

¿Cómo eliminar espacios redundantes / espacios en blanco de una cadena en Golang?

Solución:

Puede llegar bastante lejos con solo strings paquete como strings.Fields hace la mayor parte del trabajo por usted:

package main

import (
    "fmt"
    "strings"
)

func standardizeSpaces(s string) string {
    return strings.Join(strings.Fields(s), " ")
}

func main() {
    tests := []string{" Hello,   World  ! ", "Hello,tWorld ! ", " tnt Hello,tWorldn!nt"}
    for _, test := range tests {
        fmt.Println(standardizeSpaces(test))
    }
}
// "Hello, World !"
// "Hello, World !"
// "Hello, World !"

Parece que es posible que desee utilizar ambos s clase de caracteres taquigráficos y p{Zs} Propiedad Unicode para que coincida con los espacios Unicode. Sin embargo, ambos pasos no se pueden realizar con 1 reemplazo de expresión regular, ya que necesita dos reemplazos diferentes, y el ReplaceAllStringFunc solo permite una cadena de coincidencia completa como argumento (no tengo idea de cómo verificar qué grupo coincidió).

Por lo tanto, sugiero usar dos expresiones regulares:

  • ^[sp{Zs}]+|[sp{Zs}]+$ – para que coincida con todos los espacios en blanco iniciales / finales
  • [sp{Zs}]{2,} – para hacer coincidir 2 o más símbolos de espacios en blanco dentro de una cadena

Código de muestra:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    input := "   Text   More here     "
    re_leadclose_whtsp := regexp.MustCompile(`^[sp{Zs}]+|[sp{Zs}]+$`)
    re_inside_whtsp := regexp.MustCompile(`[sp{Zs}]{2,}`)
    final := re_leadclose_whtsp.ReplaceAllString(input, "")
    final = re_inside_whtsp.ReplaceAllString(final, " ")
    fmt.Println(final)
}

strings.Fields () se divide en cualquier cantidad de espacio en blanco, así:

strings.Join(strings.Fields(strings.TrimSpace(s)), " ")
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *