美文网首页
Go语言学习之——rune

Go语言学习之——rune

作者: 星空_ad64 | 来源:发表于2018-04-10 20:40 被阅读0次

    rune相当于go的char

    package main
    ​
    import (
        "fmt"
        "unicode/utf8"
    )
    ​
    func main() {
        s := "猪猪是个笨!" //含有中文字符
    ​
        fmt.Println(len(s)) // output: 18, len获得的是字节数,一个中文3个字节
        fmt.Println("Rune conut: ", utf8.RuneCountInString(s) ) 
        // output: Rune conut:6,所以可以使用 utf8.RuneCountInString(s)获得字符数量
    ​
        for _,b := range []byte(s) {
            fmt.Printf("%X ", b) //UTF-8,英文1个字节,中文3个字节
        } // output: E7 8C AA E7 8C AA E6 98 AF E4 B8 AA E7 AC A8 EF BC 81
        fmt.Println()
    ​
        for i, ch := range s { // ch is a rune
            fmt.Printf("(%d %X) ", i, ch)
        } // output: (0 732A) (3 732A) (6 662F) (9 4E2A) (12 7B28) (15 FF01) 
        fmt.Println()
    ​
        for i, ch := range s { // ch is a rune
            fmt.Printf("(%d %c) ", i, ch)
        } // output: (0 猪) (3 猪) (6 是) (9 个) (12 笨) (15 !) 直接使用range,返回的下标不是连续的
        fmt.Println()
    ​
        fmt.Println([]byte(s)) // []byte可以获得所有的字节
        // output: [231 140 170 231 140 170 230 152 175 228 184 170 231 172 168 239 188 129]
        bytes := []byte(s)
        for len(bytes) > 0 {
            ch, size := utf8.DecodeRune(bytes)
            bytes = bytes[size:]
            fmt.Printf("%c ", ch)
        } // output: 猪 猪 是 个 笨 !
        fmt.Println()
    ​
        // []rune会自己进行转换,把准换好的东西放在一个数组中,再开一个rune slice出来
        for i, ch := range []rune(s) {
            fmt.Printf("(%d %c) ", i, ch )
        } // output: (0 猪) (1 猪) (2 是) (3 个) (4 笨) (5 !) 
        fmt.Println()
    ​
    }
    

    strings包里含有多种字符串操作的函数
    Fields(空格分割),Split,Join 字符串分割合并
    Contains,Index 查找子串
    ToLower,ToUpper
    Trim,TrimRight,TrimLeft


    示例

    相关文章

      网友评论

          本文标题:Go语言学习之——rune

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