美文网首页
GO学习笔记(3) - 字符串操作

GO学习笔记(3) - 字符串操作

作者: 卡门001 | 来源:发表于2021-06-29 21:17 被阅读0次

    字符长度

    len得到字符长度 ,utf8.RuneCountInString字符串长度

    var s string
    s="Yes问天地之悠悠!"
    fmt.Println("len(s)",len(s))
    fmt.Println("len(s)",len([]byte(s)))
    fmt.Println("len([]rune(s))",len([]rune(s)))
    fmt.Println("len(s)",utf8.RuneCountInString(s))
    

    字符转数组与字节

    var bytes = []byte(s)
    fmt.Println(bytes)
    var runes = []rune(s)
    fmt.Println(runes)
    

    字符编码

    go默认的编码UTF-8,每个字符占3个字节
    Golang 内建支持 UTF-8 编码,支持转化到其它编码,例如:GBK编码,可以使用 Go 官方的 [golang.org/x/text] 包进行转换,代码如下:

    // transform GBK bytes to UTF-8 bytes
    func GbkToUtf8(str []byte) (b []byte, err error) {
        r := transform.NewReader(bytes.NewReader(str), simplifiedchinese.GBK.NewDecoder())
        b, err = ioutil.ReadAll(r)
        if err != nil {
            return
        }
        return
    }
    
    // transform UTF-8 bytes to GBK bytes
    func Utf8ToGbk(str []byte) (b []byte, err error) {
        r := transform.NewReader(bytes.NewReader(str), simplifiedchinese.GBK.NewEncoder())
        b, err = ioutil.ReadAll(r)
        if err != nil {
            return
        }
        return
    }
    

    rune

    Unicode code points ;可以简单理解为Unicode 用来表示每一个字符的 key,例如:汉字的“字”的十进制使用23383表示,这就是一个编码点。

    相关文章

      网友评论

          本文标题:GO学习笔记(3) - 字符串操作

          本文链接:https://www.haomeiwen.com/subject/gcwkultx.html