Go語言學習之——rune

rune相當于go的char

package main
?
import (
    "fmt"
    "unicode/utf8"
)
?
func main() {
    s := "豬豬是個笨!" //含有中文字符
?
    fmt.Println(len(s)) // output: 18, len獲得的是字節(jié)數(shù),一個中文3個字節(jié)
    fmt.Println("Rune conut: ", utf8.RuneCountInString(s) ) 
    // output: Rune conut:6,所以可以使用 utf8.RuneCountInString(s)獲得字符數(shù)量
?
    for _,b := range []byte(s) {
        fmt.Printf("%X ", b) //UTF-8,英文1個字節(jié),中文3個字節(jié)
    } // 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,返回的下標不是連續(xù)的
    fmt.Println()
?
    fmt.Println([]byte(s)) // []byte可以獲得所有的字節(jié)
    // 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會自己進行轉(zhuǎn)換,把準換好的東西放在一個數(shù)組中,再開一個rune slice出來
    for i, ch := range []rune(s) {
        fmt.Printf("(%d %c) ", i, ch )
    } // output: (0 豬) (1 豬) (2 是) (3 個) (4 笨) (5 !) 
    fmt.Println()
?
}

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


示例
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容