从文件名中删除路径

Pol*_*nux 21 go

我有一些微不足道的问题.

我有一个包含文件名及其路径的字符串.我怎样才能删除整条路径?我试过那些:

line = "/some/path/to/remove/file.name"
line := strings.LastIndex(line, "/")
fmt.Println(line)
Run Code Online (Sandbox Code Playgroud)

它打印一些奇怪的数字:

38
Run Code Online (Sandbox Code Playgroud)

我需要它没有最后的斜线

非常感谢

Ain*_*r-G 50

该数字是字符串中最后一个斜杠的索引.如果要获取文件的基本名称,请使用filepath.Base:

path := "/some/path/to/remove/file.name"
file := filepath.Base(path)
fmt.Println(file)
Run Code Online (Sandbox Code Playgroud)

游乐场:http://play.golang.org/p/DzlCV-HC-r.

  • @Polinux将此标记为正确答案,然后呢? (3认同)

小智 10

另外一个选择:

package main
import "path"

func main() {
   line := "/some/path/to/remove/file.name"
   line = path.Base(line)
   println(line == "file.name")
}
Run Code Online (Sandbox Code Playgroud)

https://golang.org/pkg/path#Base


use*_*184 6

你可以试试!

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
Run Code Online (Sandbox Code Playgroud)

  • 游乐场:[https://play.golang.org/p/uUthOtpkSAz](https://play.golang.org/p/uUthOtpkSAz) (2认同)
  • 这实际上是一个正确的答案,因为 filepath.Base("/") 将为您提供“/”(根路径),而 filepath.Base("") 将为您提供“.”。所以当前目录。这两种情况下 filepath.Split() 中返回的文件都将为空字符串。 (2认同)
  • 如果您的浏览器与服务器位于不同的操作系统上,这也会失败。如果浏览器发送 Windows 目录而您的服务器位于 Linux 上,则此操作会失败。:( (2认同)