DMarlon Studio

Lección 17 · 17 de 20

Los paquetes strings y strconv · Go

Trabaje con texto en Go con el paquete strings (Split, TrimSpace, Join, Contains, Replace) y convierta textos y números con strconv.

Go · Los paquetes strings y strconv en DMarlon Studio: el código del ejemplo y su salida en la terminal

El paquete `strings` reúne las funciones para trabajar con texto. strings.Split(line, ",") corta la lista de la compra en cada coma y devuelve un slice. Los trozos llevan espacios de más, que strings.TrimSpace quita por los dos extremos; %q los muestra entre comillas para comprobarlo.

Los textos de Go no se pueden modificar: estas funciones devuelven un texto nuevo y dejan el original como estaba. Por eso parts[i] = strings.TrimSpace(parts[i]) vuelve a guardar el resultado en el slice.

strings.Join hace lo contrario que Split: une el slice con el separador que se le indique, aquí " | ". ToUpper pasa a mayúsculas, Contains dice si un texto contiene otro, Replace sustituye (el 1 indica cuántas veces; -1 serían todas), Count cuenta apariciones y Repeat repite un texto, útil para dibujar una raya.

El paquete `strconv` convierte entre textos y números. Atoi pasa a int y ParseFloat a float64, y los dos devuelven además un error: con "12" es nil, y con "twelve" explica que la sintaxis no es válida. En sentido contrario, Itoa convierte un entero en texto y FormatFloat(x, 'f', 2, 64) escribe un decimal con dos cifras.

Código · main.go

package mainimport (	"fmt"	"strconv"	"strings")func main() {	line := "  milk, eggs ,bread,  olive oil  "	// Split cuts at each comma; TrimSpace removes the spaces around.	parts := strings.Split(line, ",")	for i := 0; i < len(parts); i++ {		parts[i] = strings.TrimSpace(parts[i])	}	fmt.Printf("%d items: %q\n", len(parts), parts)	fmt.Println(strings.Join(parts, " | "))	fmt.Println("Upper:", strings.ToUpper(parts[0]), "| has eggs:", strings.Contains(line, "eggs"))	fmt.Println("Replace:", strings.Replace(parts[3], "olive", "sunflower", 1), "| commas:", strings.Count(line, ","))	fmt.Println(strings.Repeat("-", 24))	// strconv turns text into numbers and numbers into text.	units, err := strconv.Atoi("12")	fmt.Println("12 units x 2 =", units*2, "error:", err)	price, _ := strconv.ParseFloat("2.75", 64)	fmt.Println("Price x 2 =", price*2)	if _, err := strconv.Atoi("twelve"); err != nil {		fmt.Println("Error:", err)	}	label := "Pack of " + strconv.Itoa(units) + ": " + strconv.FormatFloat(price*float64(units), 'f', 2, 64)	fmt.Println(label)}

Salida · go run main.go

4 items: ["milk" "eggs" "bread" "olive oil"]
milk | eggs | bread | olive oil
Upper: MILK | has eggs: true
Replace: sunflower oil | commas: 3
------------------------
12 units x 2 = 24 error: <nil>
Price x 2 = 5.5
Error: strconv.Atoi: parsing "twelve": invalid syntax
Pack of 12: 33.00

Para recordar

  • strings.Split corta y strings.Join une.
  • TrimSpace, ToUpper y Replace devuelven un texto nuevo.
  • Contains, HasPrefix y Count preguntan por el contenido.
  • strconv.Atoi y ParseFloat convierten texto en número, con error.
  • strconv.Itoa y FormatFloat convierten número en texto.

Ejercicio

Parta el texto "name=Ana;age=34;city=Bilbao" con strings.Split por ; y cada trozo por =, escriba cada clave con su valor y convierta la edad con strconv.Atoi para sumarle 1.