您的位置:首页 > 编程语言 > Go语言

Go语言中字符串的使用方法

2018-05-20 12:31 561 查看
主要讲解Go语言中字符串的使用方法

知识点:

使用range遍历字符串,获取到的是字节,无法获取中文字符,验证了在UTF-8编码中 一个汉字占三个字节

使用 utf8.RuneCountInString(s)) 获取字符串长度,可以正常解析中文,一个中文被当做一个字符。

使用 len(string) 获取字节的长度

使用 []byte(s) 获取字节

使用 []rune(s) 获取字符,可对中文进行转换

以下为代码示例:

package main

import (
"fmt"
"unicode/utf8"
)

func main() {
//默认情况下,Go使用UTF-8编码,此编码下,一个中文汉字占3个字节
//GBK、GB2312收编的汉字占2个字节,
// 严格地用iso8859-1无法表示汉字,只能转为问号。
s := "Yes我爱我家!" // UTF-8
fmt.Println(s)

for _, b := range []byte(s) {
fmt.Printf("%X ", b)
//59 65 73 E6 88 91 E7 88 B1 E6 88 91 E5 AE B6 21
}
fmt.Println()

//下面这种遍历方式 是按字节 来进行计算的
for i, ch := range s { // ch is a rune
// 会将字符转换为 unicode 编码,unicode中一个 汉字长度为两个字节
fmt.Printf("(%d %X) ", i, ch)
}
fmt.Println()

//将字符串的每一个字符转为 rune ,会达到预期效果
fmt.Println("Rune count:",
utf8.RuneCountInString(s)) //Rune count: 8

bytes := []byte(s)
for len(bytes) > 0 {
ch, size := utf8.DecodeRune(bytes)
bytes = bytes[size:]
fmt.Printf("%c ", ch) //Y e s 我 爱 我 家 !
}
fmt.Println()

for i, ch := range []rune(s) {
fmt.Printf("(%d %c) ", i, ch)
//(0 Y) (1 e) (2 s) (3 我) (4 爱) (5 我) (6 家) (7 !)
}
fmt.Println()
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Go