美文网首页
How to get a filename without ex

How to get a filename without ex

作者: 大地缸 | 来源:发表于2021-02-17 17:46 被阅读0次

    title: "How to get a filename without extension in Go"
    date: 2021-02-12T21:41:05+08:00
    draft: true
    tags: ['go']
    author: "dadigang"
    author_cn: "大地缸"
    personal: "http://www.real007.cn"


    关于作者

    http://www.real007.cn/about

    How to get a filename without extension in Go

    If you want to grab the name of a file without its extension, you can
    take a slice of the complete string as shown below:

    main.go

    func fileNameWithoutExtSliceNotation(fileName string) string {
        return fileName[:len(fileName)-len(filepath.Ext(fileName))]
    }
    
    func main() {
        fmt.Println(fileNameWithoutExtSliceNotation("abc.txt")) // abc
    }
    
    

    In this case, the extension length is subtracted from the length of the full
    string and the result is used to create a substring that excludes the
    extension.

    Another way is to use the
    strings.TrimSuffix method to
    remove the trailing suffix string specified in its second argument:

    main.go

    func fileNameWithoutExtTrimSuffix(fileName string) string {
        return strings.TrimSuffix(fileName, filepath.Ext(fileName))
    }
    
    func main() {
        fmt.Println(fileNameWithoutExtTrimSuffix("abc.txt")) // abc
    }
    
    

    This method is a arguably more readable than the previous one, but it’s also
    slower because TrimSuffix needs to make sure the suffix matches before
    removal. Here’s a
    benchmark
    that shows how the slice notation method is approximately twice as fast as the trim suffix
    method:

    $ go test -bench=.
    goos: linux
    goarch: amd64
    pkg: github.com/ayoisaiah/demo
    BenchmarkFileNameWithoutExtSliceNotation-4      201546076            5.91 ns/op
    BenchmarkFileNameWithoutExtTrimSuffix-4         100000000           12.1 ns/op
    PASS
    ok      github.com/ayoisaiah/demo   3.017s
    

    Thanks for reading, and happy coding!

    import (
          "path"
          "strings"
    )
    
    func FilenameWithoutExtension(fn string) string {
          return strings.TrimSuffix(fn, path.Ext(fn))
    }
    

    相关文章

      网友评论

          本文标题:How to get a filename without ex

          本文链接:https://www.haomeiwen.com/subject/epypxltx.html