Например, у меня есть строка, состоящая из "sample.zip". Как удалить расширение ".zip" с помощью пакета строк или другого?
Строка суффикса строки или расширения?
Ответ 1
Изменить: Go переехал. См. Ответ Кита.
Используйте путь/файлpath.Ext, чтобы получить расширение. Затем вы можете использовать длину расширения для получения подстроки минус расширение.
var filename = "hello.blah"
var extension = filepath.Ext(filename)
var name = filename[0:len(filename)-len(extension)]
В качестве альтернативы вы можете использовать strings.LastIndex, чтобы найти последний период (.), но это может быть немного более хрупким, поскольку (например, без расширения), которые filepath.Ext
обрабатывает, что вам может потребоваться явно для кода, или если Go должен быть запущен на теоретическом O/S, который использует расширитель расширений, отличный от периода.
Ответ 2
Try:
basename := "hello.blah"
name := strings.TrimSuffix(basename, filepath.Ext(basename))
TrimSuffix в основном сообщает, что он удаляет конечную строку, которая является расширением с точкой.
Документ TrimSuffix здесь
Ответ 3
Этот способ тоже работает:
var filename = "hello.blah"
var extension = filepath.Ext(filename)
var name = TrimRight(filename, extension)
но, возможно, метод Пола Руана более эффективен?