100 votes

Ajuster le suffixe ou l'extension de la chaîne ?

Par exemple, j'ai une chaîne de caractères, composée de "sample.zip". Comment puis-je supprimer l'extension ".zip" en utilisant le paquet strings ou autre ?

277voto

Keith Cascio Points 2549

Essayez :

basename := "hello.blah"
name := strings.TrimSuffix(basename, filepath.Ext(basename))

TrimSuffix lui demande essentiellement de supprimer la chaîne de fin, qui est l'extension avec un point.

chaînes#TrimSuffix

99voto

Paul Ruane Points 12840

Edit : Go est passé à autre chose. Veuillez voir Réponse de Keith .

Utilice chemin/filepath.Ext pour obtenir l'extension. Vous pouvez ensuite utiliser la longueur de l'extension pour récupérer la sous-chaîne moins l'extension.

var filename = "hello.blah"
var extension = filepath.Ext(filename)
var name = filename[0:len(filename)-len(extension)]

Vous pouvez également utiliser strings.LastIndex pour trouver la dernière période (.) mais cela peut être un peu plus fragile dans la mesure où il y aura des cas limites (par exemple pas d'extension) que filepath.Ext que vous devrez peut-être coder explicitement, ou si Go devait être exécuté sur un O/S théorique qui utilise un délimiteur d'extension autre que le point.

3voto

Bitdom8 Points 41

C'est juste une ligne plus performante. C'est ici :

filename := strings.Split(file.Filename, ".")[0]

2voto

Allan Ruin Points 397

Cette méthode fonctionne aussi :

var filename = "hello.blah"
var extension = filepath.Ext(filename)
var name = TrimRight(filename, extension)

mais peut-être que la méthode de Paul Ruane est plus efficace ?

2voto

Caffeines Points 51

J'utilise go1.14.1, filepath.Ext n'a pas fonctionné pour moi, path.Ext fonctionne bien pour moi

var fileName = "hello.go"
fileExtension := path.Ext(fileName)
n := strings.LastIndex(fileName, fileExtension)
fmt.Println(fileName[:n])

Terrain de jeux : https://play.golang.org/p/md3wAq_obNc

Documnetation : https://golang.org/pkg/path/#Ext

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X