いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-523 (ファイル名から拡張子を除きたい)(strings.TrimSuffix, filepath.Ext)

関連記事

GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ

概要

以下、自分用のメモです。たまにやりたいときに忘れているので、ここにメモメモ。。。

ファイル処理をしているときに、ファイル名から拡張子を除いた部分を取得したいときがたまにあります。

strings.TrimSuffixfilepath.Extを組み合わせると出来ます。

サンプル

exclude_suffix.go

package filepaths

import (
    "path/filepath"
    "strings"

    "github.com/devlights/gomy/output"
)

// ExcludeSuffix は、ファイル名から拡張子を除いた値を取得するサンプルです.
//
// filepath.Ext()とstrings.TrimSuffix()を組み合わせて取得出来ます。
//
// > strings.TrimSuffix(file, filepath.Ext(file))
//
// または、スライスを拡張子分だけカットすることでも取得出来ます。
//
// > file[:len(file)-len(filepath.Ext(file))]
//
// # REFERENCES
//   - https://pkg.go.dev/path/[email protected]#Ext
//   - https://pkg.go.dev/[email protected]#TrimSuffix
func ExcludeSuffix() error {
    var (
        fpath = "/path/to/src/something.go"
        dir   = filepath.Dir(fpath)
        fname = filepath.Base(fpath)
        ext   = filepath.Ext(fname)

        base1 = strings.TrimSuffix(fname, ext)
        base2 = fname[:len(fname)-len(ext)]
    )
    output.Stdoutl("[fpath]", fpath)
    output.Stdoutl("[dir  ]", dir)
    output.Stdoutl("[ext  ]", ext)
    output.Stdoutl("[base1]", base1)
    output.Stdoutl("[base2]", base2)

    return nil
}

実行

$ task
task: [build] go build -o "/workspace/try-golang/try-golang" .
task: [run] ./try-golang -onetime

ENTER EXAMPLE NAME: filepath_exclude_suffix

[Name] "filepath_exclude_suffix"
[fpath]              /path/to/src/something.go
[dir  ]              /path/to/src
[ext  ]              .go
[base1]              something
[base2]              something


[Elapsed] 33.81µs

github.com

参考情報

Goのおすすめ書籍


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。