Подтвердить что ты не робот

Строка суффикса строки или расширения?

Например, у меня есть строка, состоящая из "sample.zip". Как удалить расширение ".zip" с помощью пакета строк или другого?

4b9b3361

Ответ 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)

но, возможно, метод Пола Руана более эффективен?