3 回答
TA贡献1772条经验 获得超6个赞
这将安全地删除任何点扩展 - 如果没有找到扩展将是容忍的:
func removeExtension(fpath string) string {
ext := filepath.Ext(fpath)
return strings.TrimSuffix(fpath, ext)
}
游乐场示例。
表测试:
/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'
-> ''
TA贡献1799条经验 获得超6个赞
虽然已经有一个公认的答案,但我想分享一些字符串操作的切片技巧。
从字符串中删除最后 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
游乐场示例。
删除文件扩展名:
从您的问题描述来看,您似乎正试图.txt从字符串中删除文件扩展名后缀(即 )。
为此,我更喜欢上面@colminator 的回答,即
file := "test.txt"
fmt.Println(strings.TrimSuffix(file, filepath.Ext(file)))
TA贡献1841条经验 获得超3个赞
您可以使用它来删除最后一个“。”之后的所有内容。
去游乐场
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
}
- 3 回答
- 0 关注
- 204 浏览
添加回答
举报