我想从字符串中删除最后4个字符,因此“ test.txt”变为“ test”。
package main
import (
"fmt"
"strings"
)
func main() {
file := "test.txt"
fmt.Print(strings.TrimSuffix(file, "."))
}
答案 0 :(得分:3)
这将安全地删除所有的点扩展名-如果找不到扩展名,则可以容忍:
func removeExtension(fpath string) string {
ext := filepath.Ext(fpath)
return strings.TrimSuffix(fpath, ext)
}
游乐场example。
表测试:
/www/main.js -> '/www/main'
/tmp/test.txt -> '/tmp/test'
/tmp/test2.text -> '/tmp/test2'
/tmp/test3.verylongext -> '/tmp/test3'
/user/bob.smith/has.many.dots.exe -> '/user/bob.smith/has.many.dots'
/tmp/zeroext. -> '/tmp/zeroext'
/tmp/noext -> '/tmp/noext'
-> ''
答案 1 :(得分:1)
尽管已经有一个公认的答案,但我想分享一些切片技巧来进行字符串操作。
从字符串中删除最后n个字符
正如标题中所说的remove the last 4 characters from a string
,这是slices
的非常普遍的用法,即
file := "test.txt"
fmt.Println(file[:len(file)-4]) // you can replace 4 with any n
输出:
test
游乐场example。
删除文件扩展名:
从问题描述来看,您似乎正在尝试从字符串中修剪文件扩展名后缀(即.txt
)。
为此,我希望上面有@colminator的答案,
file := "test.txt"
fmt.Println(strings.TrimSuffix(file, filepath.Ext(file)))
答案 2 :(得分:0)
您可以使用它删除最后一个“。”之后的所有内容。
go playground
package main
import (
"fmt"
"strings"
)
func main() {
sampleInput := []string{
"/www/main.js",
"/tmp/test.txt",
"/tmp/test2.text",
"/tmp/test3.verylongext",
"/user/bob.smith/has.many.dots.exe",
"/tmp/zeroext.",
"/tmp/noext",
"",
"tldr",
}
for _, str := range sampleInput {
fmt.Println(removeExtn(str))
}
}
func removeExtn(input string) string {
if len(input) > 0 {
if i := strings.LastIndex(input, "."); i > 0 {
input = input[:i]
}
}
return input
}