用UTF字符串切断最后一个符文

时间:2015-06-02 02:42:14

标签: utf-8 go

如何在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)
}

Playground

2 个答案:

答案 0 :(得分:4)

概,

utf8包有一个函数来解码字符串中的最后一个符文,该字符串也返回其长度。减少结尾的字节数,你就是金色的:

str := "你好"
_, lastSize := utf8.DecodeLastRuneInString(str)
withoutLastRune := str[:len(str)-lastSize]
fmt.Println(withoutLastRune)

playground

答案 1 :(得分:0)

使用DecodeLastRuneInString是最佳答案。我要注意的是,如果你在运行时效率上获得更简单的代码,你可以做到

    s := []rune(str)
    fmt.Println(string(s[:len(s)-1]))