Go 字符串处理
术语
术语 | 英文 | 描述 | 备注 |
---|---|---|---|
位 | Bit | 二进制数字,0 或 1 | 计算机中的最小数据单位 |
字节 | Byte | 通常由 8 个位组成 | 计算机中的标准数据块 |
字符 | Char | 代表一个文本字符 | 在不同的编码中,可能占用不同数量的字节 |
比特 | Bit | 同“位” |
获取字符串长度
在 Go 语言中,可以使用len()
函数获取字符串的字节长度。
text := "admin"
length := len(text)
fmt.Println(length) // 输出: 5
注意,len()
函数返回的是字节长度而非字符数量。当字符串包含中文字符时,每个中文字符通常占用 3 个字节。
text := "中文"
length := len(text)
fmt.Println(length) // 输出: 6
虽然"中文"
包含 2 个字符,但len(text)
返回 6,因为每个中文字符占 3 个字节。
切片后获取长度
将字符串转换为字节切片后,可以再次使用len()
函数获取长度。
text := "i am go"
bytes := []byte(text)
fmt.Println(bytes) // 输出: [105 32 97 109 32 103 111]
fmt.Println(len(bytes)) // 输出: 7
获取字符串的字符长度
要获取字符串中的字符数量,可以将字符串转换为[]rune
切片。
text := "好好学习"
bytes := []byte(text)
runes := []rune(text)
fmt.Println(len(bytes)) // 输出: 12
fmt.Println(len(runes)) // 输出: 4
len(bytes)
返回字节数,而len(runes)
返回字符数。这在处理包含多字节字符的字符串时非常有用。
转义字符
在 Go 语言中,字符串可以使用转义字符来表示特殊字符。常用的转义字符如下:
转义序列 | 含义 | 示例 |
---|---|---|
\n | 换行符 | fmt.Println("Hello\nWorld") |
\r | 回车符 | fmt.Println("Hello\rWorld") |
\t | 制表符(水平) | fmt.Println("Hello\tWorld") |
\' | 单引号 | fmt.Println('\'Hello\'') |
\" | 双引号 | fmt.Println("\"Hello\"") |
\\ | 反斜杠本身 | fmt.Println("Hello\\World") |
\a | 报警铃声 | fmt.Println("Hello\aWorld") |
\b | 退格键 | fmt.Println("Hello\bWorld") |
\f | 换页符 | fmt.Println("Hello\fWorld") |
\v | 垂直制表符 | fmt.Println("Hello\vWorld") |
\0 | 空字符 | fmt.Println("Hello\0World") |
\xhh | 以两位十六进制数表示的字符 | fmt.Println("Hello\x0AWorld") |
\uhhhh | 以四位十六进制数表示的 Unicode 字符 | fmt.Println("Hello\u00A9World") |
\Uhhhhhhhh | 以八位十六进制数表示的 Unicode 字符 | fmt.Println("Hello\U0001F601World") |
使用反引号定义的原生字符串时,不会处理转义字符。
fmt.Println("他说:\"穷是原罪\"") // 输出: 他说:"穷是原罪"
fmt.Println(`他说:"穷是原罪"`) // 输出: 他说:"穷是原罪"