Удалить последний символ строки - PullRequest
33 голосов
/ 31 декабря 2011

Я хочу удалить самый последний символ строки, но прежде чем я это сделаю, я хочу проверить, является ли последний символ «+». Как это можно сделать?

Ответы [ 4 ]

54 голосов
/ 03 марта 2014

Встроенная функция теперь доступна.http://golang.org/pkg/strings/#TrimSuffix

39 голосов
/ 01 января 2012

Вот несколько способов убрать конечный знак плюс.

package main

import (
    "fmt"
    "strings"
)

func TrimSuffix(s, suffix string) string {
    if strings.HasSuffix(s, suffix) {
        s = s[:len(s)-len(suffix)]
    }
    return s
}

func main() {
    s := "a string ++"
    fmt.Println("s: ", s)

    // Trim one trailing '+'.
    s1 := s
    if last := len(s1) - 1; last >= 0 && s1[last] == '+' {
        s1 = s1[:last]
    }
    fmt.Println("s1:", s1)

    // Trim all trailing '+'.
    s2 := s
    s2 = strings.TrimRight(s2, "+")
    fmt.Println("s2:", s2)

    // Trim suffix "+".
    s3 := s
    s3 = TrimSuffix(s3, "+")
    fmt.Println("s3:", s3)
}

Выход:

s:  a string ++
s1: a string +
s2: a string 
s3: a string +
11 голосов
/ 31 декабря 2011

Нет встроенного способа.Но это легко сделать вручную.

s := "mystring+"
sz := len(s)

if sz > 0 && s[sz-1] == '+' {
    s = s[:sz-1]
}
2 голосов
/ 26 мая 2019

На основе ответа @KarthikGR был добавлен следующий пример:

https://play.golang.org/p/ekDeT02ZXoq

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.TrimSuffix("Foo++", "+"))
}

возвращает:

Foo+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...