如何在golang中删除字符串中的最后一个字母?

时间:2019-07-12 09:33:03

标签: go

假设我有一个名为varString的字符串。

varString := "Bob,Mark,"

问题:如何从字符串中删除最后一个字母?就我而言,这是第二个逗号。

4 个答案:

答案 0 :(得分:3)

  

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


在Go中,字符串是UTF-8编码的。 Unicode UTF-8是一种变长字符编码,每个Unicode字符(代码点)使用1-4个字节。

例如,

package main

import (
    "fmt"
    "unicode/utf8"
)

func trimLastChar(s string) string {
    r, size := utf8.DecodeLastRuneInString(s)
    if r == utf8.RuneError && (size == 0 || size == 1) {
        size = 0
    }
    return s[:len(s)-size]
}

func main() {
    s := "Bob,Mark,"
    fmt.Println(s)
    s = trimLastChar(s)
    fmt.Println(s)
}

游乐场:https://play.golang.org/p/qyVYrjmBoVc

输出:

Bob,Mark,
Bob,Mark

答案 1 :(得分:1)

这是一个更简单的方法,也适用于unicode字符串:

func removeLastRune(s string) string {
    r := []rune(s)
    return string(r[:len(r)-1])
}

游乐场链接:https://play.golang.org/p/ezsGUEz0F-D

答案 2 :(得分:0)

类似这样的东西:

s := "Bob,Mark,"
s = s[:len(s)-1]

请注意,如果最后一个字符不是仅由一个字节表示,则此方法不起作用。

答案 3 :(得分:-1)

newStr := strings.TrimRightFunc(str, func(r rune) bool {
    return !unicode.IsLetter(r) // or any other validation can go here
})

这将修剪掉右边没有字母的任何内容。