Zum Beispiel habe ich eine Zeichenfolge, besteht aus "sample.zip". Wie entferne ich die ".zip" -Erweiterung mit dem Strings-Paket oder anderem?Trim-String-Suffix oder Erweiterung?
Antwort
Bearbeiten: Go ist weitergezogen. Bitte sehen Sie Keith's answer.
Verwenden Sie path/filepath.Ext, um die Erweiterung zu erhalten. Sie können dann die Länge der Erweiterung verwenden, um den Teilstring abzüglich der Erweiterung abzurufen.
var filename = "hello.blah"
var extension = filepath.Ext(filename)
var name = filename[0:len(filename)-len(extension)]
Alternativ können Sie strings.LastIndex verwenden, um die letzte Periode zu finden (.), Aber dies kann ein wenig zerbrechlich, dass sein wird es Grenzfälle (zB ohne Erweiterung), dass filepath.Ext
Griffe, die Sie benötigen für codieren explizit, oder wenn Go auf einem theoretischen O/S ausgeführt werden soll, das einen anderen Erweiterungsbegrenzer als den Punkt verwendet.
Auf diese Weise funktioniert auch:
var filename = "hello.blah"
var extension = filepath.Ext(filename)
var name = TrimRight(filename, extension)
aber vielleicht Methode Paul Ruanes ist effizienter?
Ich denke, TrimRight entfernt hier einen "Cutset" (dh einen Zeichensatz) vom Ende, der hier vielleicht nicht das ist, was Sie wollen: http://golang.org/pkg/strings/#TrimRight (siehe auch TrimSuffix) – rogerdpack
Versuchen:
basename := "hello.blah"
name := strings.TrimSuffix(basename, filepath.Ext(basename))
TrimSuffix im Grunde erzählt die Hinter Zeichenfolge, die die Erweiterung mit einem Punkt ist abzustreifen.
TrimSuffix Doku here
Erkläre warum das funktioniert. –
Ich mag dieses, scheint besser lesbar als Array-Mathe zu tun – rogerdpack
Beachten Sie, dass 'filepath.Ext (" test.tar.gz ")' zurückgibt '.gz' das kann oder nicht sein, was Sie wollen. –
- 1. Webseite Firefox Plugin oder Erweiterung
- 2. HTML- oder ASPX-Erweiterung entfernen
- 3. Eddystone-url gesetzt oder deaktivieren Erweiterung
- 4. Sanierungsdaten in Yii 2 - Eingebaut oder Erweiterung?
- 5. Google Chrome-Erweiterung - Webdb oder IndexDB
- 6. SQL: MIME-Typ oder Erweiterung speichern?
- 7. SOAP Client-Erweiterung für Firefox oder Chrome
- 8. Barcode-Scanner in JavaScript? Oder Plugin/Erweiterung
- 9. Auslöser oder Aufruf der Chrome-Erweiterung von MIME-Typ
- 10. Erweiterung eines ImmutableMap mit zusätzlichen oder neuen Werte
- 11. react.js - Welche Erweiterung zu verwenden - '.jsx' oder nur '.js'?
- 12. jQuery Event-Erweiterung Ereignisziel oder einen Elternteil spezifischen Typs
- 13. Warum ist Memcache-PHP-Erweiterung (oder Memcached) so unzuverlässig?
- 14. Ändern der Codierung pro Datei oder pro Erweiterung
- 15. dienen statische Dateien mit oder ohne Erweiterung in restify
- 16. IServiceCollection keine Definition oder Erweiterung enthält für AddNpgsql
- 17. Chrome-Erweiterung: Daten werden nicht eingefügt oder abgerufen
- 18. Wie Debuggen Chrome Erweiterung Panel Panel Erweiterung?
- 19. TYPO3 Ändern einer Erweiterung mit eigener Erweiterung
- 20. Erweiterung System.Data.Linq.DataContext
- 21. Erweiterung momentjs
- 22. Makefile-Erweiterung
- 23. UIStoryboard Erweiterung
- 24. Makefile Erweiterung
- 25. IEnumerable Erweiterung
- 26. mobilesubstrat Erweiterung
- 27. Xcode 8 Erweiterung deaktiviert
- 28. WCF Erweiterung Authentifizierung
- 29. Suche nach Ursprung Erweiterung
- 30. WPF: Baum Erweiterung Tastenkombination
Danke, mein Problem lösen jetzt. – Coder
strings.TrimSuffix, darunter, tut das gleiche Array math/Indizes :) – rogerdpack
@rogerdpack, ja Leute sollten Keiths Antwort verwenden. "TrimSuffix" war in Go nicht vorhanden, als ich diese Antwort geschrieben habe (es wurde [in Go 1.1 im Februar 2013 hinzugefügt] (https://code.google.com/p/go/source/diff?spec=svnc7353c98694b135ba941cea93b01e5c0e6a4dd55&old=c0f7c53dcfce43f4921cce7bb2ef7800c752bf4c&r) = c7353c98694b135ba941cea93b01e5c0e6a4dd55 & format = unidiff & pfad =% 2Fsrc% 2Fpkg% 2Fstrings% 2Fstrings.go)). –