Как я могу удалить последние 4 символа из строки? - PullRequest
0 голосов
/ 18 мая 2019

Я хочу удалить последние 4 символа из строки, поэтому «test.txt» становится «test».

package main

import (
    "fmt"
    "strings"
)

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

Ответы [ 3 ]

3 голосов
/ 18 мая 2019

Это безопасно удалит любое расширение точки - и будет терпимым, если расширение не найдено:

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'
                                         -> ''
1 голос
/ 20 мая 2019

Хотя уже есть принятый ответ, я хочу поделиться некоторыми хитростями срезов для работы со строками.

  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
    

    Детская площадка пример .

  2. Удалите расширения файлов:

    Из описания вашей проблемы похоже, что вы пытаетесь обрезать суффикс расширения файла (т.е., .txt) из строки.

    Для этого я бы предпочел ответ @ colminator сверху, который равен

    file := "test.txt"
    fmt.Println(strings.TrimSuffix(file, filepath.Ext(file)))
    
0 голосов
/ 18 мая 2019

Вы можете использовать это, чтобы удалить все после последнего "."
игровая площадка

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...