如何在UTF字符串中切断最后一个符文? 这种方法显然不正确:
package main
import ("fmt"
"unicode/utf8")
func main() {
string := "你好"
length := utf8.RuneCountInString(string)
// how to cut off last rune in UTF string?
// this method is obviously incorrect:
withoutLastRune := string[0:length-1]
fmt.Println(withoutLastRune)
}
答案 0 :(得分:4)
概,
utf8包有一个函数来解码字符串中的最后一个符文,该字符串也返回其长度。减少结尾的字节数,你就是金色的:
str := "你好"
_, lastSize := utf8.DecodeLastRuneInString(str)
withoutLastRune := str[:len(str)-lastSize]
fmt.Println(withoutLastRune)
答案 1 :(得分:0)
使用DecodeLastRuneInString是最佳答案。我要注意的是,如果你在运行时效率上获得更简单的代码,你可以做到
s := []rune(str) fmt.Println(string(s[:len(s)-1]))