web-dev-qa-db-fra.com

Comment supprimer le dernier caractère d'une chaîne dans Golang?

Je veux supprimer le tout dernier caractère d'une chaîne, mais avant de le faire, je veux vérifier si le dernier caractère est un "+". Comment cela peut-il être fait?

34
Micheal Perr

Voici plusieurs façons de supprimer le (s) signe (s) de fin.

package main

import (
    "fmt"
    "strings"
)

func TrimSuffix(s, suffix string) string {
    if strings.HasSuffix(s, suffix) {
        s = s[:len(s)-len(suffix)]
    }
    return s
}

func main() {
    s := "a string ++"
    fmt.Println("s: ", s)

    // Trim one trailing '+'.
    s1 := s
    if last := len(s1) - 1; last >= 0 && s1[last] == '+' {
        s1 = s1[:last]
    }
    fmt.Println("s1:", s1)

    // Trim all trailing '+'.
    s2 := s
    s2 = strings.TrimRight(s2, "+")
    fmt.Println("s2:", s2)

    // Trim suffix "+".
    s3 := s
    s3 = TrimSuffix(s3, "+")
    fmt.Println("s3:", s3)
}

Production:

s:  a string ++
s1: a string +
s2: a string 
s3: a string +
41
peterSO

La fonction intégrée est maintenant disponible. http://golang.org/pkg/strings/#TrimSuffix

55
Karthik G R

Aucun moyen intégré. Mais c'est trivial à faire manuellement.

s := "mystring+"
sz := len(s)

if sz > 0 && s[sz-1] == '+' {
    s = s[:sz-1]
}
11
jimt

Sur la base de la réponse de @KarthikGR, l'exemple suivant a été ajouté:

https://play.golang.org/p/ekDeT02ZXoq

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.TrimSuffix("Foo++", "+"))
}

retour:

Foo+
3
030