假设我有一个名为varString
的字符串。
varString := "Bob,Mark,"
问题:如何从字符串中删除最后一个字母?就我而言,这是第二个逗号。
答案 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])
}
答案 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
})
这将修剪掉右边没有字母的任何内容。