Удалить путь из имени файла

У меня есть тривиальный вопрос.

У меня есть строка, которая содержит имя файла и его путь. Как я могу удалить весь путь? Я пробовал:

line = "/some/path/to/remove/file.name"
line := strings.LastIndex(line, "/")
fmt.Println(line)

Он печатает какое-то странное число:

38

Мне нужно это без последней косой черты

большое спасибо

Ответ 1

Число - это индекс последней косой черты в строке. Если вы хотите получить базовое имя файла, используйте filepath.Base:

path := "/some/path/to/remove/file.name"
file := filepath.Base(path)
fmt.Println(file)

Игровая площадка: http://play.golang.org/p/DzlCV-HC-r.

Ответ 2

Можешь попробовать!

dir, file := filepath.Split("/some/path/to/remove/file.name")
fmt.Println("Dir:", dir)   //Dir: /some/path/to/remove/
fmt.Println("File:", file) //File: ile.name

Ответ 3

Если вам нужен базовый путь без fileName, вы можете использовать Dir, который описан здесь: https://golang.org/pkg/path/filepath/#Dir

Цитирую часть своей документации:

Dir возвращает все, кроме последнего элемента пути, обычно это каталог пути. После удаления последнего элемента Dir вызывает команду "Очистить путь", а завершающие косые черты удаляются.

Также из их документации, запустив этот код:

package main

import (
    "fmt"
    "path/filepath"
)

func main() {
    fmt.Println("On Unix:")
    fmt.Println(filepath.Dir("/foo/bar/baz.js"))
    fmt.Println(filepath.Dir("/foo/bar/baz"))
    fmt.Println(filepath.Dir("/foo/bar/baz/"))
    fmt.Println(filepath.Dir("/dirty//path///"))
    fmt.Println(filepath.Dir("dev.txt"))
    fmt.Println(filepath.Dir("../todo.txt"))
    fmt.Println(filepath.Dir(".."))
    fmt.Println(filepath.Dir("."))
    fmt.Println(filepath.Dir("/"))
    fmt.Println(filepath.Dir(""))

}

даст вам такой вывод:

В Unix: /Foo/бар /Foo/бар /Foo/ бар/Baz /Грязный/путь,.., , /.

Попробуйте сами здесь:

https://play.golang.org/p/huk3EmORFw5

Если вместо этого вы хотите получить fileName без базового пути, @Ainar-G достаточно ответит на это.