我有一些微不足道的问题。
我有一个包含文件名及其路径的字符串。我怎样才能删除整条路径?我试过那些:
line = "/some/path/to/remove/file.name"
line := strings.LastIndex(line, "/")
fmt.Println(line)
打印出一些奇怪的数字:
38
我需要它而没有最后的斜杠
非常感谢
答案 0 :(得分:44)
该数字是字符串中最后一个斜杠的索引。如果您想获取文件的基本名称,请使用filepath.Base
:
path := "/some/path/to/remove/file.name"
file := filepath.Base(path)
fmt.Println(file)
答案 1 :(得分:4)
你可以尝试一下!
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
答案 2 :(得分:1)
另一种选择:
package main
import "path"
func main() {
line := "/some/path/to/remove/file.name"
line = path.Base(line)
println(line == "file.name")
}
答案 3 :(得分:0)
如果您希望基本路径不包含fileName,则可以使用Dir,该文件记录在这里:https://golang.org/pkg/path/filepath/#Dir
引用其文档的一部分:
Dir返回除路径的最后一个元素以外的所有元素,通常是路径的目录。删除最后一个元素后,Dir会在路径上调用Clean并删除斜杠。
也从他们的文档中运行以下代码:
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 / bar / foo / bar / foo / bar / baz /脏/路径 。 .. 。 。 /
在这里自己尝试:
https://play.golang.org/p/huk3EmORFw5
如果您想获取不带基本路径的fileName,则@ Ainar-G已经足够回答了这一点。