Ad esempio, ho una stringa, costituita da "sample.zip". Come rimuovere l'estensione ".zip" utilizzando il pacchetto di stringhe o altro?Il suffisso o l'estensione della stringa di ritaglio?
risposta
Modifica: Go è stato spostato. Si prega di vedere Keith's answer.
Utilizzare path/filepath.Ext per ottenere l'estensione. È quindi possibile utilizzare la lunghezza dell'estensione per recuperare la sottostringa meno l'estensione.
var filename = "hello.blah"
var extension = filepath.Ext(filename)
var name = filename[0:len(filename)-len(extension)]
In alternativa è possibile utilizzare strings.LastIndex per trovare l'ultimo punto (.), Ma questo può essere un po 'più fragile che non ci saranno casi limite (ad esempio, senza estensione) che filepath.Ext
maniglie che potrebbe essere necessario per codificare esplicitamente, o se Go doveva essere eseguito su un O/S teorico che utilizza un delimitatore di estensione diverso dal periodo.
In questo modo funziona troppo:
var filename = "hello.blah"
var extension = filepath.Ext(filename)
var name = TrimRight(filename, extension)
ma forse il metodo di Paul Ruane è più efficiente?
Penso che qui TrimRight rimuova un "cutset" (cioè set di caratteri) dalla fine, che potrebbe non essere quello che vuoi qui: http://golang.org/pkg/strings/#TrimRight (vedi anche TrimSuffix) – rogerdpack
Prova:
basename := "hello.blah"
name := strings.TrimSuffix(basename, filepath.Ext(basename))
TrimSuffix sostanzialmente dice di togliere la stringa finale che è l'estensione con un punto.
TrimSuffix docu here
Spiega perché questo funziona –
Mi piace questo, sembra più leggibile rispetto alla matematica dell'array – rogerdpack
Nota che 'filepath.Ext (" test.tar.gz ")' restituisce '.gz' che può o non può essere quello che vuoi. –
- 1. come fare il numero di suffisso stringa
- 2. Contenuto interno del ritaglio di ritaglio
- 3. ritaglio semplice con il Paperclip
- 4. Android supporta il ritaglio video?
- 5. maschera di ritaglio vml
- 6. Come verificare cosa inizia una stringa con (prefisso) o termina con (suffisso) in Swift
- 7. come modificare il frame di ritaglio UIImagePickerController
- 8. Che cosa significa il suffisso J intere?
- 9. .n suffisso all'istruzione di ramo?
- 10. conversione di canvas in BLOB utilizzando il ritaglio js
- 11. Euristica good-suffisso Boyer-Moore
- 12. Ritaglio di UILabel quando regolaFontSizeToFitWidth
- 13. Suffisso display Retina iPad
- 14. Lavorare con gli alberi di suffisso in python
- 15. Imagemagick convertire il ritaglio e ridimensionare
- 16. Cosa significa il suffisso "_t" in C?
- 17. UIImagePickerController Ritaglio?
- 18. Make Sweave o knitr put suffisso grafica in `\ includegraphics {}`
- 19. Chart.js V2: Aggiungi prefisso o suffisso all'etichetta tooltip
- 20. memoria di ricerca efficace nella lista suffisso
- 21. UILabel carattere corsivo ritaglio
- 22. Il suffisso "dev" nei nomi dei pacchetti?
- 23. Che cosa significa il suffisso 'h'?
- 24. funzioni pthread suffisso "_np"
- 25. Plotaggio di calendari di ritaglio
- 26. Ritaglio diagramma Hive
- 27. Come si prende un suffisso di una stringa in bash usando gli offset negativi?
- 28. ios9 - Problemi con il ritaglio CVImageBuffer
- 29. Come calcolare il rettangolo di ritaglio vicino di una bitmap?
- 30. stringhe di ritaglio con actionscript 3
Grazie, risolvere il mio problema ora. – Coder
stringhe.TrimSuffix, sotto, fa lo stesso array matematica/indici :) – rogerdpack
@rogerdpack, sì la gente dovrebbe usare la risposta di Keith. 'TrimSuffix' non esisteva in Go quando ho scritto questa risposta (è stato [aggiunto in Go 1.1 a febbraio 2013] (https://code.google.com/p/go/source/diff?spec=svnc7353c98694b135ba941cea93b01e5c0e6a4dd55&old=c0f7c53dcfce43f4921cce7bb2ef7800c752bf4c&r = c7353c98694b135ba941cea93b01e5c0e6a4dd55 & format = unidiff & path =% 2Fsrc% 2Fpkg% 2Fstrings% 2Fstrings.go)). –