web-dev-qa-db-fra.com

Comment couper le caractère "[" à partir d'une chaîne dans Golang

Probablement une chose idiote, mais je suis resté coincé dessus un peu ...

Impossible de couper un "[" char à partir d'une chaîne, ce que j'ai essayé avec les sorties:

package main

import (
    "fmt"
    "strings"
)

func main() {
    s := "this[things]I would like to remove"
    t := strings.Trim(s, "[")

    fmt.Printf("%s\n", t)   
}

// output: this[things]I would like to remove

aller au terrain de je

J'ai également essayé tous ceux-ci, sans succès:

s := "this [ things]I would like to remove"
t := strings.Trim(s, " [ ")
// output: this [ things]I would like to remove


s := "this [ things]I would like to remove"
t := strings.Trim(s, "[")
// output: this [ things]I would like to remove

Aucun n'a fonctionné. Qu'est-ce que j'oublie ici?

15
Blue Bot

Vous manquez de lire le doc. strings.Trim() :

func Trim(s string, cutset string) string

Trim renvoie une tranche de la chaîne s avec tous points de code Unicode en tête et en fin contenus dans le cutset supprimés.

Le caractère [ Dans votre entrée n'est pas dans une position en tête ni dans une position en fin, il est en milieu, donc strings.Trim() –être bien comportement– ne le supprimera pas.

Essayez à la place strings.Replace() :

s := "this[things]I would like to remove"
t := strings.Replace(s, "[", "", -1)
fmt.Printf("%s\n", t)   

Sortie (essayez-le sur le Go Playground ):

thisthings]I would like to remove

Il y a aussi un strings.ReplaceAll() ajouté dans Go 1.12 (qui est fondamentalement un "raccourci" pour Replace(s, old, new, -1)).

36
icza