如何从字符串中删除最后4个字符?

时间:2019-05-18 16:54:48

标签: string go

我想从字符串中删除最后4个字符,因此“ test.txt”变为“ test”。

package main

import (
    "fmt"
    "strings"
)

func main() {
    file := "test.txt"
    fmt.Print(strings.TrimSuffix(file, "."))
}

3 个答案:

答案 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)

尽管已经有一个公认的答案,但我想分享一些切片技巧来进行字符串操作。

  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

  2. 删除文件扩展名:

    从问题描述来看,您似乎正在尝试从字符串中修剪文件扩展名后缀(即.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
}